我使用Apiary.io模拟我的API。但不知何故,我无法使用angularJS从response对象中读取任何标头。我确信我至少已经通过签入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
发布于 2013-01-07 21:25:34
这一切都归结为火狐中的一个bug:https://bugzilla.mozilla.org/show_bug.cgi?id=608735
对于CORS请求,虽然req.getRequestHeader('Content-Type')可以正确返回,但firefox不会为req.getAllRequestHeaders()返回任何内容。
要么FF bug必须修复,要么Angular必须绕过它(就像jQuery一样),或者你必须更深入地直接使用XmlHttpRequest实例。
这可能也是相关的,但可能不是核心问题:
然而,几天前,Apiary.io没有在CORS标头中设置Max-Age。因此,如果您有一个最小的蓝图,您可能会缓存CORS飞行前响应,因此即使您向蓝图添加了额外的资源,后续请求也可能被禁止。
Max-Age现在设置为10秒,因此它应该可以正常工作。但是,根据浏览器的不同,飞行前缓存可能仍然会影响您。尝试清除它或在其他浏览器中测试此应用程序。
https://stackoverflow.com/questions/14188662
复制相似问题