我使用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);});
答案 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秒,因此它应该正常工作。但是,根据您的浏览器,飞行前缓存可能仍然会影响您。尝试清除它或在另一个浏览器中测试此应用程序。