cors - 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 包。
有谁知道问题的根源或我如何进一步排除故障?
解决方案
问题最终是我的route
设置出错。我不知道为什么会抛出CORS
错误而不是错误。Not Found
请注意,这可能会发生,掩盖潜在的错误并让您在错误的切线上尝试追踪CORS
错误的来源,即使CORS
配置正确且工作正常。
推荐阅读
- javascript - 两个字符串之间的javascript正则表达式匹配并计算其中的字符数
- c++ - 潜在抛出函数信号安全吗?
- python - 我正在尝试做一个点击游戏,但它不起作用,为什么?
- php - 如何以编程方式提供 Symfony 路由参数?
- php - 从变量中输入 href 参数
- algorithm - Path Sum 的递归实现问题
- react-native - 尝试导入错误:“EasingNode”未从“react-native-reanimated”导出
- php - Codeigniter Tank_auth 会话未设置
- linux - /proc/ 怎么样
/cmdline 与进程的 argv 变量相关? - identityserver4 - IdentityServer4 - 我的 API 代码中需要 given_name 声明,但我的 API 中没有身份令牌。我怎样才能得到given_name?