vue中使用axios获取不到响应头Content-Disposition的解决办法

项目中,后端返回的文件流,fileName是机构名称+服务器时间。
前端需要拿到响应头里的Content-Disposition字段的值,从中获取文件名

在控制台Headers中可以看到相关的字段和文件名,但是在axios里面却获取不到

 

如果想要让客户端访问到相关信息,服务器不仅要在heade里添加,还要将它们在 Access-Control-Expose-Headers 里面列出来

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

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

 

前端部分

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let blob = new Blob([res.data], {type:"application/force-download"})
        console.log(blob);
        let fileReader = new FileReader()  
        console.log(res, '响应状态');
        const filename = decodeURIComponent(res.headers["content-disposition"].split("=")[1]);
        fileReader.readAsDataURL(blob)
        fileReader.onload = (e) => {
            let a = document.createElement('a')
            a.download = decodeURI(filename)
            a.href = e.target.result
            document.body.appendChild(a)
            a.click()
            document.body.removeChild(a)
        }

 

  

 

 

 

 

posted @   紫诺花开  阅读(5449)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示