- 发起请求网址如果是 www.baidu.com,跨域下载 Google cdn 的资源
Excel 文件
背景:
- Excel 模板存储在 OSS 上,提供的一个链接,需要支持 用户点击下载
方案:
- V1
- 问题:跨域 a标签 download 属性失效
<a href="https://cdn.google.com/1.xlsx" target="_blank" download="教师信息表模板.xlxs">教师信息表模板</a>
- V2
-
使用现有请求库,比如 axios,因为大部分请求库都是基于业务特性进行了封装,包含了 withCredentials:true
-
在跨域下载的场景,需要配置 withCredentials:false,不携带 cookie
-
requestLib.get('https://cdn.google.com/1.xlsx', {
withCredentials: false
})
或者
requestLib.download('https://cdn.google.com/1.xlsx', {
fileName: '教师信息表模板.xlxs',
withCredentials: false
})
- V3
import { saveAs } from 'save-as'
const xhr = new XMLHttpRequest()
xhr.open('GET', 'https://cdn.google.com/1.xlsx', true)
xhr.responseType = 'blob'
xhr.onload = () => {
if (xhr.status === 200) {
saveAs(xhr.response, `${this.arrangeTypeTplName}.xlsx`)
}
}
xhr.send()
V4:
saveAs('https://cdn.google.com/1.xlsx', '教师信息表模板.xlxs')