在Asp.NET中为选项预检请求添加'access-control-allow-origin'响应

Jam*_*sla 11 asp.net asp.net-mvc cors asp.net-core

我在Chrome中遇到以下错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.原产地" 的http://本地主机:9000 "因此不允许访问.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseIISPlatformHandler();

    app.UseDefaultFiles();
    app.UseStaticFiles();

    app.UseCors(policy => policy
       .WithOrigins("http://localhost:9000")
       .AllowAnyMethod()
       .WithHeaders("Access-Control-Allow-Origin, Content-Type, x-xsrf-token, Authorization")
       .AllowCredentials());

    app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)

根据chrome,没有一个标题被添加到响应中.

access-control-allow-origin在Asp.NET 5 中将标题添加到选项响应的正确方法是什么?

Ami*_*rzi 5

考虑到Google Chrome 有一个问题,它不支持localhost通过Access-Control-Allow-Origin

在您的代码中,您已使用方法中的AddCorsUseCors方法启用了 CORS Configure,请确保您已按照指定 CORS 策略ConfigureServices方法中使用)和如何在 ASP.NET 5 中启用 CORS 中提供的说明进行操作

你也可以简单地为普通的 Asp.net MVC 控制器编写一个动作过滤器

CORS 的类型

  1. Microsoft.AspNet.WebApi.Cors :使用它来为 Web API 启用 CORS 请求。
  2. Microsoft.AspNet.Cors :使用它为 MVC 控制器启用 CORS。
  3. Microsoft.Owin.Cors :使用它为进入您站点的所有跨域请求启用 CORS,例如,当您想要为 Web API 和 SignalR 启用 CORS 时。


Jam*_*sla 2

这确实没有意义,但正如 @Sirwan 建议的那样,使用.AllowAnyHeader()在选项响应上设置访问权限...