YVAN7123
V2EX  ›  问与答

前端跨域问题!

  •  
  •   YVAN7123 · Aug 12, 2024 · 1386 views
    This topic created in 686 days ago, the information mentioned may be changed or developed.

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

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

    看到以前的代码里有

    <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 replies    2024-08-13 12:09:40 +08:00
    NewYear
        1
    NewYear  
       Aug 12, 2024
    不是要看以前的代码,是要看以前的例子,试试是否可行,然后再模仿。
    darksword21
        2
    darksword21  
    PRO
       Aug 12, 2024 via iPhone
    不能让后端之间通信吗,可以写死服务间 token ,前端处理这个还挺麻烦吧
    coolfan
        3
    coolfan  
       Aug 12, 2024
    👉跨域不应该让后端或者 nginx 处理吗,让服务器允许这个站点
    AV1
        4
    AV1  
       Aug 12, 2024
    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
       Aug 12, 2024
    @DOLLOR
    @darksword21
    @coolfan
    后端说:后端的跨域问题都是框架直接全局配置的 之前的所有下载都在这样处理的,我不好单独在返回里面添加配置,你最好看看之前的下载接口前端是怎么处理的,正常应该不会出现这个问题
    YVAN7123
        6
    YVAN7123  
    OP
       Aug 12, 2024
    我都给他截图会有跨域问题了
    volvo007
        7
    volvo007  
       Aug 13, 2024 via iPhone
    有请求头那只能让后端处理了吧。跨域只发生在浏览器到服务器,服务器到服务器没有跨域,所以也可以改代码挂个 js proxy
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3415 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 11:56 · PVG 19:56 · LAX 04:56 · JFK 07:56
    ♥ Do have faith in what you're doing.