V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
YVAN7123
V2EX  ›  问与答

前端跨域问题!

  •  
  •   YVAN7123 · 101 天前 · 922 次点击
    这是一个创建于 101 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    看到以前的代码里有

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

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

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

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

    这事得找跨域目标的后端程序员来协调。
    YVAN7123
        5
    YVAN7123  
    OP
       101 天前
    @DOLLOR
    @darksword21
    @coolfan
    后端说:后端的跨域问题都是框架直接全局配置的 之前的所有下载都在这样处理的,我不好单独在返回里面添加配置,你最好看看之前的下载接口前端是怎么处理的,正常应该不会出现这个问题
    YVAN7123
        6
    YVAN7123  
    OP
       101 天前
    我都给他截图会有跨域问题了
    volvo007
        7
    volvo007  
       100 天前 via iPhone
    有请求头那只能让后端处理了吧。跨域只发生在浏览器到服务器,服务器到服务器没有跨域,所以也可以改代码挂个 js proxy
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:27 · PVG 06:27 · LAX 14:27 · JFK 17:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.