在 Web Api Core 1.1 中启用 Cors
Posted
技术标签:
【中文标题】在 Web Api Core 1.1 中启用 Cors【英文标题】:Enable Cors in Web Api Core 1.1 【发布时间】:2017-11-22 18:01:10 【问题描述】:我需要在我的 Web Api .Net Core 中启用跨域资源共享,但没有任何反应,我的请求标头中从来没有 Access-Control-Allow-Origin。
这是 Startup.cs 配置:
public void ConfigureServices(IServiceCollection services)
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()));
services.AddMvc();
services.Configure<IISOptions>(options =>
options.AutomaticAuthentication = true;
);
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseCors("AllowAll");
ConfigureAuth(app);
app.UseMvc();
这是响应标头 Header
【问题讨论】:
是全部代码吗?没有异常中间件或错误页面?这些可以在发生异常时清除 cors 标头 中间件或页面中没有例外。我真的不知道为什么它不起作用。没有错误,在调试中代码被执行,但没有办法有标题 但是您在调用 API 时是否遇到任何错误? 【参考方案1】:您可以在 ConfigureServices 方法中的 Startup 类中配置 CORS
public void ConfigureServices(IServiceCollection services)
.
. services.AddCors(options =>
.
. options.AddPolicy("CorsPolicy",
. builder => builder.AllowAnyOrigin()
. .AllowAnyMethod()
. .AllowAnyHeader()
. .AllowCredentials());
. );
.
将其应用于每个请求
public void Configure(IApplicationBuilder app)
app.UseCors("MyPolicy");
你可以应用在控制器或方法上,例如添加属性
[EnableCors("MyPolicy")]
`
【讨论】:
以上是关于在 Web Api Core 1.1 中启用 Cors的主要内容,如果未能解决你的问题,请参考以下文章
在 Web API Core 和 Angular JS 中启用 CORS
无法在 ASP.Net Core Web api 中启用 CORS
在 .NET Core Web API 上为 CORS 启用 OPTIONS 标头
在 ASP .NET Core 2.1 Web Api 中启用 CORS