Fetch 无法获取响应头

请求响应后,打印 Response.headers 却输出了空对象。

经过笔者数分钟的探索,发现产生这种情况,应该是请求处于跨域之中,于此则要在 fetch() 中配置 mode 属性:

mode: 请求的模式,如 cors、 no-cors 或者 same-origin。

fetch(url,{
    mode: 'cors',
    ...
})

至于 Response.headers 中的请求头信息不全,则要在服务端配置 Access-Control-Expose-Headers

响应首部 Access-Control-Expose-Headers 列出了哪些首部可以作为响应的一部分暴露给外部。

默认情况下,只有七种 simple response headers (简单响应首部)可以暴露给外部:

  • Cache-Control
  • Content-Language
  • Content-Length
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma

如果想要让客户端可以访问到其他的首部信息,可以将它们在 Access-Control-Expose-Headers 里面列出来。