我使用 Apiary.io mock 我的 API。但不知何故,我无法使用 angularJS 从响应对象读取任何 header 。而且我确定我至少有 Content-Type: application/json 通过检查 firebug 正确设置。 Angular 中的代码也应该正确读取 header ,因为我可以在将请求发送到 apiary.io 以外的其他地方时打印它们...
$http.get('http://ies.apiary.io/some').then(function(response) {
console.log("ok",response.headers('Content-Type'));
},function(response){console.log("err",response);});
http://plnkr.co/edit/zMO0pXGsIdJkV0fZdBdw
最佳答案
这一切都归结为 Firefox 中的一个错误:https://bugzilla.mozilla.org/show_bug.cgi?id=608735
对于 CORS 请求,firefox 不会为 req.getAllRequestHeaders() 返回任何内容,尽管 req.getRequestHeader('Content-Type') 正确返回。
要么 FF 错误必须被修复,要么 Angular 必须解决它(就像 jQuery 一样),或者你必须更深入地直接使用 XmlHttpRequest 实例。
这可能也是相关的,但可能不是核心问题:
然而,几天前,Apiary.io 没有在 Max-Age
header 中设置 CORS
。因此,如果您有一个最小蓝图,您可能会缓存 CORS
飞行前响应,因此即使您向蓝图中添加了额外的资源,后续请求也可能被禁止。Max-Age
现在设置为 10 秒,所以它应该可以正常工作。但是,根据您的浏览器,飞行前缓存可能仍会影响您。尝试清除它或在另一个浏览器中测试此应用程序。
关于javascript - AngularJS 和 Apiary.IO - 无法读取任何响应 header ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14188662/