【发布时间】:2014-09-01 01:32:06
【问题描述】:
我在发出跨域请求的指令中有代码。当它在 Chrome 中运行时,它工作得很好。当它在 Firefox 或 IE 11 中运行时,我得到一个没有数据的状态代码 0。我的代码是:
$http({method: 'GET', url: 'https://mycrossdomain.url'})
.success(function(data, status, headers, config) {
alert('success');
})
.error(function(data, status, headers, config) {
alert('error');
})
在 Firefox 和 IE 中我收到“错误”警报,在 Chrome 中我收到“成功”并且我可以查看数据。
为什么会发生这种情况?服务器显然支持跨域请求,因为它可以在 Chrome 中运行。当我在所有浏览器中导航到 URL 时,我都会收到响应,因此它肯定存在。任何帮助将不胜感激。
【问题讨论】:
-
尝试比较 Chrome 和 Firefox 中的请求和响应标头,以验证它们是否相同。另外,每个浏览器会提示什么,“成功”还是“错误”?
-
除了响应标头中的标头相同之外,Chrome 具有“Access-Control-Allow-Credentials”= true 和“Access-Control-Allow-Origin”= 我的服务器域。这不在 Firefox 的响应中。
-
另外,我可以在 Firefox 的控制台中看到我收到一条消息“跨域请求被阻止...”等。
标签: angularjs google-chrome firefox cross-domain