原因: 被部长要求参加隔壁部门的业务开发(🥶
前端跨域下载一个文件,而且要带请求头(认证信息)。
看到以前的代码里有
<a style="display: none" id="download" target="downloadFile"></a>
<iframe style="display: none" name="downloadFile"></iframe>
setTimeout(() => {
this.$cookies.set("token", tempToken, 30 * 24 * 3600);
}, 50);
let a = document.getElementById("download");
a.href = url;
a.download = file.name;
a.click();
领导还说要看以前的代码,但是我试了这个代码,也不能下载文件啊!
有没有大佬有实现的方法!!
1
NewYear 106 天前
不是要看以前的代码,是要看以前的例子,试试是否可行,然后再模仿。
|
2
darksword21 106 天前 via iPhone
不能让后端之间通信吗,可以写死服务间 token ,前端处理这个还挺麻烦吧
|
3
coolfan 106 天前
👉跨域不应该让后端或者 nginx 处理吗,让服务器允许这个站点
|
4
DOLLOR 106 天前
this.$cookies.set()设置的是当前页面所在的域名的 cookie ,并不能设置跨域目标的 cookie 。
a.download = file.name 只对同域名有效,对跨域行为无效(“download” only works for same-origin URLs, or the blob: and data: schemes.)。 这事得找跨域目标的后端程序员来协调。 |
5
YVAN7123 OP @DOLLOR
@darksword21 @coolfan 后端说:后端的跨域问题都是框架直接全局配置的 之前的所有下载都在这样处理的,我不好单独在返回里面添加配置,你最好看看之前的下载接口前端是怎么处理的,正常应该不会出现这个问题 |
6
YVAN7123 OP 我都给他截图会有跨域问题了
|
7
volvo007 105 天前 via iPhone
有请求头那只能让后端处理了吧。跨域只发生在浏览器到服务器,服务器到服务器没有跨域,所以也可以改代码挂个 js proxy
|