4

我使用 Apiary.io 模拟我的 API。但不知何故,我无法使用 angularJS 从响应对象中读取任何标题。而且我确信我至少通过检查萤火虫正确设置了 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

4

1 回答 1

5

这一切都归结为 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-AgeCORSheaders 中设置。因此,如果您有一个最小的蓝图,您可能会CORS缓存飞行前响应,因此即使您向蓝图添加了额外的资源,后续请求也可能被禁止。

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

于 2013-01-07T13:25:33.567 回答