可能会在header中无法获取到 content-disposition ;

① 拦截时,只返回了部分数据,

// 添加响应拦截器
axios.interceptors.response.use(response=>{
    // 对响应数据做点什么
    return response.data; //这里只把这个响应里的data返回回来了,所以取不到headers,想要全部信息就return response;
  }, error=>{
    // 对响应错误做点什么
    return Promise.reject(error);
});
②后台没有返回 content-disposition 参数,需要后台搞一下;

查看了 network ,响应头确实有返回 content-disposition;但是打印以及通过.headers['content-disposition']就是获取不到;

是因为cros跨域,浏览器只会返回默认头部的header,并不能完全获取后端自定义的所有数据;

因此,需要后端在header中添加 Access-Control-Expose-Headers 信息;

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

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

 

这个时候就能在前端获取到响应的数据了 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐