Для упрощения комплексной конфигации 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()); });