首页 > 解决方案 > WebAPI 项目响应标头中缺少 Access-Control-Allow-Origin

问题描述

我有两个.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两个项目中都已启用。

在此处输入图像描述 使用我的客户端访问其中一个 WebAPIlocalhost:3725工作正常,访问另一个会引发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 包。

有谁知道问题的根源或我如何进一步排除故障?

标签: corsasp.net-web-api2

解决方案


问题最终是我的route设置出错。我不知道为什么会抛出CORS错误而不是错误。Not Found请注意,这可能会发生,掩盖潜在的错误并让您在错误的切线上尝试追踪CORS错误的来源,即使CORS配置正确且工作正常。


推荐阅读