Как включить CORS в ASP.NET Керн
Я пытаюсь включить совместное использование ресурсов cross origin на моем ASP.NET ядро веб-API, но я застрял.
The
4 ответа:
вы должны настроить политику CORS при запуске приложения в
ConfigureServices
способ:public void ConfigureServices(IServiceCollection services) { services.AddCors(o => o.AddPolicy("MyPolicy", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); })); // ... }
The
CorsPolicyBuilder
наbuilder
позволяет настроить политику в соответствии с вашими потребностями. Теперь вы можете использовать это имя для применения политики к контроллерам и действиям:[EnableCors("MyPolicy")]
или применить его к каждому запросу:
public void Configure(IApplicationBuilder app) { app.UseCors("MyPolicy"); // ... }
это
.Net-Core 1.1
к сожалению, документы очень запутаны в этом конкретном случае. Так что я сделаю его мертвым-просто:
- добавить
Microsoft.AspNetCore.Cors
пакет nuget для вашего проекта- на
ConfigureServices
способ, добавьтеservices.AddCors();
на
Configure
способ, перед вызовомapp.UseMvc()
иapp.UseStaticFiles()
добавить:app.UseCors(builder => builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials());
вот и все. Каждый клиент имеет доступ к вашему ASP.NET Керн Сайт / API.
на
.Net-Core 2.0
- добавить
Microsoft.AspNetCore.Cors
пакет nuget для вашего проектана
ConfigureServices
способ, перед вызовомservices.AddMvc()
добавить:services.AddCors(options => { options.AddPolicy("AllowAll", builder => { builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials(); }); });
на
Configure
способ, перед вызовомapp.UseMvc()
добавьтеapp.UseCors("AllowAll");
AllowAll
это имя политики, которое мы должны упомянуть в приложении.Пользователи. Это может быть любое имя.
на основе ответ Хенка я смог придумать конкретный домен, метод, который я хочу разрешить, а также заголовок, который я хочу включить CORS для:
public void ConfigureServices(IServiceCollection services) { services.AddCors(options => options.AddPolicy("AllowSpecific", p => p.WithOrigins("http://localhost:1233") .WithMethods("GET") .WithHeaders("name"))); services.AddMvc(); }
использование:
[EnableCors("AllowSpecific")]
'
public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddPolicy("AllowAnyOrigin", builder => builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader()); }); services.Configure<MvcOptions>(options => { options.Filters.Add(new CorsAuthorizationFilterFactory("AllowAnyOrigin")); }); }
'