Access-Control-Allow-Origin WebAPI 项目响应中缺少 header
Access-Control-Allow-Origin missing in WebAPI projects response header
我有两个 .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 的响应 Headers,工作的一个包含:
Access-Control-Allow-Origin: http://localhost:3725
失败的 WebApi localhost:54739
的响应 header 中缺少此内容,localhost:54739
。
我以相同的方式构建了两个项目,并且具有相同的 NuGet 包版本。
有谁知道问题的根源是什么,或者我该如何进一步解决问题?
问题最终是我的 route
设置出错了。我不知道为什么会抛出 CORS
错误而不是 Not Found
错误。请注意,这可能会发生,掩盖潜在的错误并让您走上错误的切线,试图追踪 CORS
错误的来源,即使 CORS
已正确配置并正常工作。
我有两个 .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 的响应 Headers,工作的一个包含:
Access-Control-Allow-Origin: http://localhost:3725
失败的 WebApi localhost:54739
的响应 header 中缺少此内容,localhost:54739
。
我以相同的方式构建了两个项目,并且具有相同的 NuGet 包版本。
有谁知道问题的根源是什么,或者我该如何进一步解决问题?
问题最终是我的 route
设置出错了。我不知道为什么会抛出 CORS
错误而不是 Not Found
错误。请注意,这可能会发生,掩盖潜在的错误并让您走上错误的切线,试图追踪 CORS
错误的来源,即使 CORS
已正确配置并正常工作。