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

udn*_*sap 19 javascript fetch cors 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();
       }
    })
Run Code Online (Sandbox Code Playgroud)

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

Adn*_*mer 42

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

作为W3规格说明这里,只有Content-Type,Last-modified,Content-Language,Cache-Control,Expires,Pragma头都可以访问.

进一步https://httpbin.org/getContent-Type从可访问标题列表中发送标题,所以,你只能得到它.

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

  • 这非常有帮助。对于那些 Rails 5 开发人员,编辑 `config/initializers/cors.rb` 是有效的。我在 `resource '*'` 语句中添加了:`expose: ['Location'],` (2认同)