https://enable-cors.org/index.html
注意事項(xiàng):
1.當(dāng)代碼里面使用Content-Disposition來(lái)確保瀏覽器彈出下載對(duì)話框的時(shí)候。 response.addHeader("Content-Disposition","attachment");一定要確保沒(méi)有做過(guò)關(guān)于禁止瀏覽器緩存的操作。
代碼如下:
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
不然會(huì)發(fā)現(xiàn)下載功能在opera和firefox里面好好的沒(méi)問(wèn)題,在IE下面就是不行。
Response Header:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Authorization,DNT,User-Agent,Keep-Alive,Content-Type,accept,origin,X-Requested-With
Access-Control-Allow-Methods: GET,OPTIONS,PUT,DELETE
Access-Control-Allow-Origin: https://wkylin.com.cn
Access-Control-Expose-Headers: Content-Disposition
Connection: keep-alive
Content-Disposition: attachment;filename='wkylin.pdf'
Content-Security-Policy: frame-ancestors *
Content-Type: application/octet-stream; charset=utf-8
Date: Sun, 01 Sep 2019 06:34:20 GMT
Server: nginx/1.10.3 (Ubuntu)
Transfer-Encoding: chunked
Vary: Cookie
X-Frame-Options: SAMEORIGIN, allow-from
下載文件,文件名由后端返回....
api.downloadFiles(params).then(res => {
if (res.data.type.indexOf('json') !== -1) {
message.error('未知錯(cuò)誤,請(qǐng)稍候再試!');
} else {
const disposition = res.headers['content-disposition'];
if (disposition) {
const fileName = decodeURI(disposition.split('=')[1].replace(/\'/g, ''));
const blob = new Blob([res.data]);
const downloadElement = document.createElement('a');
const href = URL.createObjectURL(blob); // 創(chuàng)建下載的鏈接
downloadElement.href = href;
downloadElement.download = fileName; // 下載后文件名
document.body.appendChild(downloadElement); // 追加a標(biāo)簽
downloadElement.click(); // 點(diǎn)擊下載
document.body.removeChild(downloadElement); // 下載完成移除元素
URL.revokeObjectURL(href); // 釋放掉blob對(duì)象
} else {
message.error('未知錯(cuò)誤,請(qǐng)稍候再試!');
}
}
})