Bootstrap

【JS】无法获取response headers中Content-Disposition

问题复现

在这里插入图片描述

  • 从响应头中看是有 Content-Disposition 的,然后实际打印:
fetch(
  url,
  {
    method: 'GET',
    headers: {
      'content-type': 'application/json',
      'X-Requested-With': 'XMLHttpRequest',
    },
    mode: 'cors',
    credentials: 'include',
  },
)
.then((res) => {
      // 从响应头中获取 Content-Disposition
      console.log('Content-Disposition :', res.headers.get("Content-Disposition")); 	// 打印结果为 null
  })

解决方法

  • 上面问题提到的 content-disposition 打印不出来,即使服务器在协议回包里加了该字段,但因没暴露给外部,客户端就拿不到。

  • 而响应首部 Access-Control-Expose-Headers 就是控制“暴露”的开关,它列出了哪些首部可以作为响应的一部分暴露给外部。

  • 所以如果想要让客户端可以访问到其他的首部信息,服务器不仅要在heade里加入该首部,还要将它们在 Access-Control-Expose-Headers 里面列出来

  • 需要后端添加上去:

response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
;