WebAPI项目响应标头中缺少Access-Control-Allow-Origin

时间:2019-02-08 08:02:25

标签: cors asp.net-web-api2

我有两个.NET Framework 4.6.2 WebAPI项目。 两者都使用Microsoft.AspNet.WebApi.Cors v5.2.7. 两者都在其Cors文件中启用了WebApiConfig.cs

  var cors = new EnableCorsAttribute("http://localhost:3725", "*", "*");
  config.EnableCors(cors);

如果我在WebApiConfig.cs中设置了一个断点,则会看到两个项目中都启用了Cors

enter image description here 用我的localhost:3725客户端访问其中一个WebAPI可以正常工作,访问另一个则抛出been blocked by Cors error

jquery-3.3.1.js:9600 OPTIONS http://localhost:54739/logging/Performance 404 (Not Found) send @ jquery-3.3.1.js:9600 ajax @ jquery-3.3.1.js:9206 perfLoggerStop @ flogging.js:46 (anonymous) @ JsTodos:106 fire @ jquery-3.3.1.js:3268 fireWith @ jquery-3.3.1.js:3398 done @ jquery-3.3.1.js:9305 (anonymous) @ jquery-3.3.1.js:9548 load (async) send @ jquery-3.3.1.js:9567 ajax @ jquery-3.3.1.js:9206 getAllTodos @ JsTodos:100 onclick @ JsTodos:44 JsTodos:1 Access to XMLHttpRequest at 'http://localhost:54739/logging/Performance' from origin 'http://localhost:3725' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

如果我在Fiddler中检查两个WebAPI的响应标头,则工作标头包含:
      Access-Control-Allow-Origin: http://localhost:3725

失败的WebApi的响应标头localhost:54739中缺少此内容。

我以相同的方式构建了两个项目,并且具有相同的NuGet软件包版本。

有人知道这个问题的根源是什么,或者我如何进一步排除故障?

1 个答案:

答案 0 :(得分:0)

最终的问题是我在route设置中遇到了错误。我不知道为什么引发了CORS错误而不是Not Found错误。请注意,即使CORS已正确配置并可以正常工作,也可能会发生这种情况,掩盖潜在的错误,并向您发送错误的切线,以试图找出CORS错误的根源。