Политики CORS

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7

Последнее обновление: 22.12.2019

Кроме непосредственной установки конфигурации CORS в app.UseCors, можно определять политики CORS. Политики определяют набор правил взаимодействия сервера и клиента. А чтобы задействовать нужную политику, в метод app.UseCors передается ее название:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace CorsApp
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options => options.AddPolicy("AllowLocalhost44321", builder => builder
                    .WithOrigins("https://localhost:44321")
                    .AllowAnyHeader()
                    .AllowAnyMethod())
               );
        }

        public void Configure(IApplicationBuilder app)
        {

            app.UseCors("AllowLocalhost44321");

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello client!");
            });
        }
    }
}

В метод AddCors передается делегат, который принимает объект CorsOptions - настройки CORS. У этого объекта вызывается метод AddPolicy(), который устанавливает политику. Первый параметр метода - произвольное название политики (в данном случае AllowLocalhost44321). Второй параметр - делегат, который для создания политики использует объект CorsPolicyBuilder. То есть это тот же самый объект, методы которого были рассмотрены в прошлой теме. Поэтому для него можно использовать все те же самые методы:

services.AddCors(options => options.AddPolicy("AllowLocalhost44321", builder => builder
                    .WithOrigins("https://localhost:44321")
                    .AllowAnyHeader()
                    .AllowAnyMethod())
);

Чтобы применить эту политику в метод app.UseCors передается ее название:

app.UseCors("AllowLocalhost44321");

При этом можно определить набор политик и применять одну из них, меняя ее по мере необходимости:

services.AddCors(options => 
{
	options.AddPolicy("TestPolicy", builder => builder
					   .WithOrigins("https://localhost:44321")
                       .AllowAnyHeader()
                       .AllowAnyMethod());
	options.AddPolicy("ProductionPolicy", builder => builder
                       .WithOrigins("http://localhost.com")
                       .AllowAnyHeader()
                       .AllowAnyMethod());
});
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850