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

时间:2015-12-03 21:27:33

标签: asp.net asp.net-mvc cors asp.net-core

我在Chrome中收到以下错误:

  

对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标题出现在请求的上   资源。起源' http://localhost: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();
}

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

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

4 个答案:

答案 0 :(得分:3)

考虑 Google Chrome浏览器an issue不支持 localhost 通过 Access-Control-Allow-Origin

在您的代码中,您已使用AddCors方法中的UseCorsConfigure方法启用了CORS,请确保您已按照{{3}中的说明进行操作({{1>}方法中使用的)和Specifying a CORS Policy

您也可以简单地写一个How to enable CORS in ASP.NET 5

CORS的类型'

  1. ConfigureServices:使用它来启用CORS请求 仅适用于Web API。
  2. Microsoft.AspNet.WebApi.Cors:使用它为MVC控制器启用CORS。
  3. Microsoft.AspNet.Cors:使用它为所有交叉来源启用CORS 请求来到您的网站,例如,当您想要时 为Web API和SignalR启用CORS。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

要克服预检问题在你的API中添加与[httpoption]同名的方法,并从那里返回成功,现在只需运行你的web /客户端应用程序,你会在httpoption方法第一次点击同样的方法两次,然后你原来的

答案 3 :(得分:0)

将其放在startup.cs文件的configure部分中:

app.UseCors (x => x.AllowAnyOrigin ().AllowAnyMethod ().AllowAnyHeader ());