Jquery 铬说不';访问控制允许原点';标题,但标题在那里

Jquery 铬说不';访问控制允许原点';标题,但标题在那里,jquery,google-chrome,cross-domain,cors,Jquery,Google Chrome,Cross Domain,Cors,这个问题在stackoverflow中已经提到了十几次,但我有一个不同的问题 Chrome首先进行“选项”调用以获取标题。正如您所看到的,正确的标题在那里 由于某些原因,Chrome不会注意到头,并以与头根本不存在时相同的方式取消实际请求 该页面实际上进行了三次调用,奇怪的是,其中一次可以正常工作 所以问题是,当标题真的存在时,为什么Chrome不尊重它?我能做些什么来调试它 更新 我尝试添加访问控制允许方法,因此现在来自选项调用的标头响应包括以下响应标头: Access-Control-

这个问题在stackoverflow中已经提到了十几次,但我有一个不同的问题

Chrome首先进行“选项”调用以获取标题。正如您所看到的,正确的标题在那里

由于某些原因,Chrome不会注意到头,并以与头根本不存在时相同的方式取消实际请求

该页面实际上进行了三次调用,奇怪的是,其中一次可以正常工作

所以问题是,当标题真的存在时,为什么Chrome不尊重它?我能做些什么来调试它

更新

我尝试添加
访问控制允许方法
,因此现在来自选项调用的标头响应包括以下响应标头:

Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:*
结果是一样的

在服务器端设置标题

我在服务器端为每个请求设置头(在Global.asax.cs应用程序_BeginRequest中)

与Fiddler一起调查后

我查看了原始请求和响应,发现了一些令人惊讶的事情:这个错误是来自应用程序的一个简单HTTP 500错误。可能是因为HTTP 500错误不包含正确的头,所以Chrome不会显示返回的错误,而是显示与头相关的错误

回答


因此,总之,如果Chrome给出了
无“访问控制允许源代码”标题
,它可能实际上掩盖了HTTP 500错误。这可以通过检查Fiddler中的请求和响应来确定。

如果Chrome说没有“Access Control Allow Origin”(访问控制允许源代码)头,它实际上可能掩盖了HTTP 500错误。这可以通过检查Fiddler中的请求和响应来确定。

和代码…代码在哪里?还应该有一个
访问控制允许方法
标题。我在截图中没有看到。@RobertRozas谢谢。这个问题是关于为什么Chrome会这样做,所以我尽量不包含那些会让我的注意力从我试图理解的问题上转移的代码。但如果需要,我可以发布原始请求/响应?@NielsBrinch您能确定正确的选项响应与无效的选项响应有何不同吗?在这种情况下,客户端代码完全不相关。但是,有些人可能对您在何处/如何设置cors头感兴趣。是否指定了浏览器可以在500上执行任何操作的位置?选项调用应该告诉浏览器可以继续执行真正的调用。如果选项调用失败,它最终将不向浏览器授予此权限,这基本上就是浏览器向您报告的内容。
Response.Headers.Add("Access-Control-Allow-Origin", "*");
Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS");