javascript - 使用正确的 header 和 OPTIONS 请求,仍然得到 "No Access-Control-Allow-Origin header is present on the requested resource"

标签 javascript ajax cross-domain cross-domain-policy

所以我正在尝试使用 javascript 进行跨域 AJAX 请求。

我的 OPTIONS 请求正在执行,没有任何问题,我正在返回 Access-Control-Allow-Origin:* 作为响应 header 。但是,当尝试发出后续 POST 请求时,出现以下错误:

请求的资源上不存在“Access-Control-Allow-Origin” header 。因此不允许访问源“http://phoenix-client.local”。

我已经多次验证我的 OPTIONS 请求确实发送了正确的响应,包括 Access-Control-Allow-Origin header ,但浏览器似乎忽略了它:(

有什么想法吗?

编辑 - 我注意到的几件事:

如果我尝试更新我的服务器正在发送的 header ,除了我之外的其他人在发出请求时都会得到最新更新的 header 。就好像我的计算机正在缓存对 OPTIONS 请求的响应。

这只发生在我的一个 AJAX 请求中。我在请求失败之前发出了多个请求,除了最后一个请求之外,所有请求都工作正常( header 保持原样)。

编辑!!!!

更新这篇文章(非常晚)。这最终不是 CORS 错误。我从 Chrome 收到一个错误的“Access-Control-Allow-Origin”错误,但是当我直接运行 AJAX 请求时,我得到了真正的错误(通常应该是错误 500,带有某种 PHP 错误消息) .仍然不确定为什么会发生这种情况......

最佳答案

如果其他人遇到这个问题,我会结合上面的一些评论。

该规范概述了 CORS 请求上下文中网络错误的非常具体的行为。对于预检请求,网络错误或非 2xx 响应将被报告为 CORS 错误,即使 ACAO header 是正确的。对于底层请求,根据我对规范的理解,具体错误应该是可见的。也就是说,Chrome 似乎在非 2xx 的基础请求上显示 CORS 错误。看起来这是 Chrome 中报告的错误:http://code.google.com/p/chromium/issues/detail?id=269192 .

关于javascript - 使用正确的 header 和 OPTIONS 请求,仍然得到 "No Access-Control-Allow-Origin header is present on the requested resource",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248077/

相关文章:

javascript - 文件加载到浏览器后去掉href的路径

javascript - 凭证更改后需要身份验证

javascript - jquery 中的日期转换

javascript - 在打开的窗口中监听 URL 变化

Javascript : difference two ways declare variable in a function

javascript - Jquery Validation 使用远程检查用户名

jquery - 如何使用 Jquery 和 ajax 从 JSON 文件检索数据?

javascript - 上传大图像文件时 Ajax 响应为空

javascript - 提取外部 javascript 查询字符串/ anchor 值 : file. js#foo=bar

json - 如何处理跨域 iframe 文件上传 json 响应?