下載文件,跨域獲取Response Headers中響應頭,以及IE無法下載文件

最近遇到一個在跨域的情況下無法下載excel文件的問題(我的項目通過Iframe集成到他人系統上)

核心代碼

下載文件通過bold

import {
  saveAs
} from 'file-saver';

axios({
  method:'get',
  url:'下載文件地址',
  responseType:'blob'
})
  .then(function(response) {
   const content = response.data;
   const fileName = decodeURI(
            response.headers["content-disposition"].split(";")[1].split("=")[1]
          );
   saveAs(content, fileName);
});

上述fileName就是獲取response headers中content-disposition響應頭從而獲取名稱
在這裏插入圖片描述
然而在跨域的情況下是獲取不到除默認的響應頭之外的響應頭的

解決方式

增加響應頭Access-Control-Expose-Headers
Access-Control-Expose-Headers: Content-disposition, Content-Type,Cache-control 等等
如上就可以訪問到Content-disposition, Content-Type,Cache-control的響應頭數據

後記:
文件下載IE無法下載可以採用這種方式,使用location.href ,IE中有時會失效,所以還是目前這種方式比較完美

咻咻~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章