我有两个.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
。
用我的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软件包版本。
有人知道这个问题的根源是什么,或者我如何进一步排除故障?
答案 0 :(得分:0)
最终的问题是我在route
设置中遇到了错误。我不知道为什么引发了CORS
错误而不是Not Found
错误。请注意,即使CORS
已正确配置并可以正常工作,也可能会发生这种情况,掩盖潜在的错误,并向您发送错误的切线,以试图找出CORS
错误的根源。