AngularJS和Apiary.IO - 无法读取任何响应标头?

时间:2013-01-07 01:22:03

标签: javascript http-headers angularjs apiary.io

我使用Apiary.io模拟我的API。但不知怎的,我无法使用angularJS从响应对象中读取任何标头。而且我确信我至少通过检查firebug来正确设置Content-Type:application / json。 Angular中的代码也应正确读取标题,因为我可以在向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

1 个答案:

答案 0 :(得分:5)

这一切归结为firefox中的一个错误:https://bugzilla.mozilla.org/show_bug.cgi?id=608735

对于CORS请求,firefox没有为req.getAllRequestHeaders()返回任何内容,尽管req.getRequestHeader('Content-Type')正确返回。

要么必须修复FF bug,要么Angular必须解决它(就像jQuery那样)或者你必须更深入并直接使用XmlHttpRequest实例。


这可能也是相关的,但可能不是核心问题:


但是,几天前,Apiary.io没有在Max-Age标题中设置CORS。因此,如果您有最小的蓝图,则可能会缓存CORS飞行前响应,因此即使您向蓝图添加了其他资源,也可能不允许后续请求。

Max-Age现在设置为10秒,因此它应该正常工作。但是,根据您的浏览器,飞行前缓存可能仍然会影响您。尝试清除它或在另一个浏览器中测试此应用程序。