2016-08-15 91 views
12

我在使用chrome 52.0.2743.82(64位)进行提取。我想获得响应中的所有标题。以下片段仅返回content-type,但如果您浏览chrome开发工具,则会显示许多其他响应标头。如何获取其他标题。如何从提取中获取响应的标题

fetch('https://httpbin.org/get') 
    .then(response => { 
     const headers = response.headers.entries(); 
     let header = headers.next(); 
     while (!header.done){ 
     console.log(headers.value); 
     header = header.next(); 
     } 
    }) 

我尝试了polyfilling(手动覆盖)github实现。仍然没有运气。

+2

如果你知道你正在寻找什么头,你可以尝试response.headers.get('header-name') – KumarM

+0

看看这个页面底部的兼容性表,它并没有说铬支持条目()然而。 https://developer.mozilla.org/en-US/docs/Web/API/Headers – KumarM

回答

26

当通过ajax请求跨域内容时,您无法访问所有标题。如果来源相同,您可以访问所有标题。

如W3规格here,只有Content-TypeLast-modifiedContent-LanguageCache-ControlExpires解释,Pragma头都可以访问。

更多https://httpbin.org/get只发送Content-Type从可访问标题列表头,所以,你只有这一点。

编辑:您可以通过发送Access-Control-Expose-Headers您希望客户端在响应中访问的标头来暴露非标准CORS响应标头。

+0

这非常有帮助。对于那些Rails 5开发者,编辑'config/initializers/cors.rb'工作。我在'resource'*''声明中加入:'expose:['Location']' – jasonseminara