场景:
文件下载接口,后端返回一个文件流,并且将文件名携带在响应头"Content-Disposition"上,前端在浏览器中是能看到那个响应头的,但是代码中无法获取
原因:
该项目使用设置 “Access-Control-Allow-Origin: *”响应头来解决跨域(CORS),但是浏览器在处理这类请求时,只会给js脚本暴露CORS白名单全响应头字段,给js脚本,所以在浏览器调试中可以看到响应回来的所有响应头,却只能获取到几个常见的响应头。
解决方案
后端在返回时除了需要写入响应头“Content-Disposition”,还需要设置“Access-Control-Expose-Headers”来让浏览器暴露给script脚本对应的响应头字段
Access-Control-Expose-Headers: [Content-Disposition]
Content-Disposition: attachment; filename="filename.jpg"