jquery – Chrome说没有’Access-Control-Allow-Origin’标题,但标题就在那里

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

Chrome首先进行“OPTIONS”调用以获取标题.如您所见,正确的标题就在那里.

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

该页实际上进行了三次调用并且好奇地,其中一个有效.

所以问题是,当标题确实存在时,为什么Chrome不尊重它?我该怎么做才能调试它?

更新

我尝试添加Access-Control-Allow-Methods,所以现在OPTIONS调用的头响应包括这些响应头:

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 Application_BeginRequest中)

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");

在与Fiddler调查之后

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

回答

总而言之,如果Chrome提供了“No-Access-Control-Allow-Origin”标题,它实际上可能会掩盖HTTP 500错误.这可以通过检查Fiddler中的请求和响应来确定.

最佳答案
如果Chrome说没有’Access-Control-Allow-Origin’标题,它实际上可能会掩盖HTTP 500错误.这可以通过检查Fiddler中的请求和响应来确定.

转载注明原文:jquery – Chrome说没有’Access-Control-Allow-Origin’标题,但标题就在那里 - 代码日志