前端跨域问题!

138 天前
 YVAN7123

原因: 被部长要求参加隔壁部门的业务开发(🥶

前端跨域下载一个文件,而且要带请求头(认证信息)。

看到以前的代码里有

<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();

领导还说要看以前的代码,但是我试了这个代码,也不能下载文件啊!

有没有大佬有实现的方法!!

944 次点击
所在节点    问与答
7 条回复
NewYear
138 天前
不是要看以前的代码,是要看以前的例子,试试是否可行,然后再模仿。
darksword21
138 天前
不能让后端之间通信吗,可以写死服务间 token ,前端处理这个还挺麻烦吧
coolfan
138 天前
👉跨域不应该让后端或者 nginx 处理吗,让服务器允许这个站点
DOLLOR
138 天前
this.$cookies.set()设置的是当前页面所在的域名的 cookie ,并不能设置跨域目标的 cookie 。
a.download = file.name 只对同域名有效,对跨域行为无效(“download” only works for same-origin URLs, or the blob: and data: schemes.)。

这事得找跨域目标的后端程序员来协调。
YVAN7123
138 天前
@DOLLOR
@darksword21
@coolfan
后端说:后端的跨域问题都是框架直接全局配置的 之前的所有下载都在这样处理的,我不好单独在返回里面添加配置,你最好看看之前的下载接口前端是怎么处理的,正常应该不会出现这个问题
YVAN7123
138 天前
我都给他截图会有跨域问题了
volvo007
137 天前
有请求头那只能让后端处理了吧。跨域只发生在浏览器到服务器,服务器到服务器没有跨域,所以也可以改代码挂个 js proxy

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1064476

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX