我使用 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/

10-09 08:33