【发布时间】:2015-11-14 07:12:39
【问题描述】:
我正在对 web AngularJS 应用程序(1.3 版本)进行一些更改。对于 ajax 调用,我使用 $http。所有请求都是跨域的,所以我在来自服务器的所有响应中使用 CORS 标头。
我的问题是,由于无法解释的原因,当我在 Chrome 中监视它们时,所有 CORS 标头都被剪切(对于 Firefox 也是如此),但我在 Fiddler 响应中看到它们。 状态代码 >= 400 的请求会发生这种情况。因此,所有状态码为 200 的请求在响应中都有 CORS 标头。
在提琴手我看到:
Access-Control-Allow-Headers: Origin, Content-Type, Accept, Cache-Control
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Connection: keep-alive
但在浏览器中我看到:
Connection: close
这是 $http 总是返回 0 作为状态码的原因。对于 1.4.0 Angular $http 已重写,即使没有 CORS 标头也可以正常工作,但我现在无法更新 Angular 库。
有人遇到同样的问题吗?
【问题讨论】:
-
您使用什么作为 HTTP 服务器?阿帕奇?
-
尝试了 IIS8 和节点服务器 (stackoverflow.com/questions/6084360/…)
-
你是如何添加 CORS 标头的?
-
API 假定控制这个问题。我不知道怎么做,对不起。无论如何,我试图从我的家用电脑发送相同的请求。那里一切正常。这真的很奇怪。我认为某些设置已损坏。窗户...
-
IIS8 应该有自己的 400 响应,我认为您可以对其进行修改以包含 CORS 标头。在 node.js 上,您还必须为您的 400 响应显式发送这些标头。无论如何,为什么您需要在 400 个响应代码上使用 CORS?
标签: javascript ajax angularjs cors