Политики CORS

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

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

var builder = WebApplication.CreateBuilder();

builder.Services.AddCors(options => options.AddPolicy("AllowLocalhost7027", builder => builder
                    .WithOrigins("https://localhost:7027")
                    .AllowAnyHeader()
                    .AllowAnyMethod())
               );

var app = builder.Build();

app.UseCors("AllowLocalhost7027");

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

app.Run();

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

builder.Services.AddCors(options => options.AddPolicy("AllowLocalhost7027", builder => builder
                    .WithOrigins("https://localhost:7027")
                    .AllowAnyHeader()
                    .AllowAnyMethod())
);

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

app.UseCors("AllowLocalhost7027");

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

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