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

当使用fetchAPI进行GET请求时,尽管服务器返回的响应头包含Content-Disposition,由于浏览器的同源策略限制,客户端无法直接获取。为解决此问题,需在服务器端设置Access-Control-Expose-Headers,明确指定允许暴露给客户端的头部信息,例如添加`response.setHeader(Access-Control-Expose-Headers,Content-Disposition)`,这样客户端才能正确读取Content-Disposition字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题复现

在这里插入图片描述

  • 从响应头中看是有 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");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗不甘坠落的流星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值