【发布时间】:2016-09-05 09:53:27
【问题描述】:
我有一个 ASP.NET 5 Web API(好吧,无论如何现在都是 MVC)后端,我正在使用我的 JS 应用程序中的 axios 库。
我在 MVC 中的 CORS 配置如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddCors();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors(builder => {
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
}
也就是说,我应该允许所有可能的请求。然而,虽然这个修复了预检请求,但 POST 请求仍然被拒绝(我可以看到它在服务器上执行,但响应中没有标头,因此会导致客户端错误)。
有没有人知道为什么这不起作用?
这些是 MVC api 返回的标头:
【问题讨论】:
-
请确保您的客户端将原始标头发送到您的服务器,并且您的服务器接收到原始标头,如果没有原始标头,则 cors 中间件将无法工作。而且如果使用这种方式配置cors,就不需要将cors添加到服务集合中。
-
我刚刚再次检查了请求,它们都在发送原始标头。
-
当您使用 post 请求时,您能否说明服务器是否收到了 origin 标头?此外,cors 中间件将始终拦截选项请求。你能告诉我cors的版本吗? RC1 在我的应用程序中正常工作。
-
只需使用调试查看
HttpContext.Request.Headers's Results View或打印HttpContext.Request.Headers["Origin"]以检查标题字段 -
发生异常时,默认的异常处理程序会清除所有响应头,包括cors头。
标签: c# asp.net-core cors