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

4

我正在使用Apiary.io来模拟我的API。但是不知怎么的,我无法使用AngularJS从响应对象中读取任何标头。我确定我至少已经正确设置了Content-Type: application/json,因为我在firebug中检查过了。在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


你能否在 Plunker 或 jsFiddle 上设置代码,以便在上下文中展示出它不起作用的地方?这样我们可以更快地回答你。 - Josh David Miller
plunker - Jakub Kuchar
1个回答

5
所有问题都归结于Firefox中的一个bug:https://bugzilla.mozilla.org/show_bug.cgi?id=608735 对于CORS请求,Firefox没有返回req.getAllRequestHeaders()的任何内容,尽管req.getRequestHeader('Content-Type')可以正确返回。
或者必须修复FF bug,或者Angular必须解决它(就像jQuery那样),或者您必须深入使用XmlHttpRequest实例。
这可能也与问题有关,但可能不是核心问题:
然而,几天前,Apiary.io在CORS标头中未设置“Max-Age”。因此,如果你有一个最小的蓝图,你可能会缓存CORS预检响应,因此即使你添加了其他资源到你的蓝图中,后续请求也可能被禁止。
现在,将Max-Age设置为10秒,所以应该能正常工作。但是,根据您的浏览器,预检缓存可能仍然影响您。尝试清除它,或在另一个浏览器中测试此应用程序。

在Chrome中工作正常,但Firefox仍然不行。通过清除缓存的Web内容和清除离线Web内容和用户数据来清除Firefox。即使是私人浏览模式也没有帮助。 - Jakub Kuchar
@JakubKuchar 在我的 Firefox 中也可以运行。你能否在 OPTIONS 请求的某个地方粘贴你的请求/响应信息(或者截图)?或者,通过 http://support.apiary.io/ 上的“联系支持”创建工单,因为这更像是 apiary 调试问题而不是 Angular 相关问题。 - Almad
我使用bounceapp.com创建了两个截图,一个是用Firefox浏览器的截图,另一个是用Chrominium浏览器的截图。希望它们能够正常显示,因为这是我第一次使用bounceapp.com。 - Jakub Kuchar
@Almad,您有没有想过如何从拦截器中获取实际的XHR对象? - deitch
@deitch 它应该显示在Apiary的检查器中。如果没有,请通过support@apiary.io告诉我们。 - Almad
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接