【问题标题】:Access-Control-Allow-Origin missing in WebAPI projects response headerWebAPI 项目响应标头中缺少 Access-Control-Allow-Origin
【发布时间】:2019-02-08 08:02:25
【问题描述】:

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

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

如果我在 WebApiConfig.cs 中设置断点,我会看到 Cors 已在两个项目中启用。

使用我的 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 包。

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

【问题讨论】:

    标签: cors asp.net-web-api2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 2019-10-03
      • 1970-01-01
      • 2019-02-07
      • 2018-03-28
      • 2021-07-15
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多