如何从fetch中获取响应的标头

时间:2016-08-15 11:03:22

标签: javascript cors fetch fetch-api

我在chrome版本52.0.2743.82(64位)上使用fetch。我想获得响应中的所有标题。以下代码段仅返回content-type,但如果您查看chrome dev工具,则会显示许多其他响应标头。如何从fetch中获取其他标题。

  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实现。仍然没有运气。

1 个答案:

答案 0 :(得分:36)

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

如W3规范here中所述,仅Content-TypeLast-modifiedContent-LanguageCache-ControlExpiresPragma标题可以访问。

进一步https://httpbin.org/get仅从可访问标头列表中发送Content-Type标头,因此,您只能获得该标头。

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