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

请问下这种情况跨域可以解决吗?

  •  
  •   pdog18 · 2023-06-07 20:27:35 +08:00 · 952 次点击
    这是一个创建于 529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    A:Electron App 通过接口访问 A 的服务端

    B:Web App 通过接口访问 B 的服务端

    两者(前端及服务器)都没有源码。

    Electron 中访问 Web App 中的 api 时提示跨域,报错。(其实就是我在 开发者工具 的 console 通过 fetch 访问了)

    这种情况下的跨域可以解决吗?(无法修改服务端代码)

    是否只能通过代理服务器来解决了?

    7 条回复    2023-06-08 22:02:35 +08:00
    rekulas
        1
    rekulas  
       2023-06-07 22:18:40 +08:00   ❤️ 1
    electron 的话你可以通过 node 中转下请求就绕过了
    pdog18
        2
    pdog18  
    OP
       2023-06-07 23:12:21 +08:00
    @rekulas 哈哈,关键是两个 app 都不是我的,改不了源码
    IvanLi127
        3
    IvanLi127  
       2023-06-07 23:32:01 +08:00 via Android
    electron 是开源的,chromium 能禁用安全策略,理论上你可以想办法替换一个禁用安全策略的 electron ,然后就没有限制了。
    a132811
        4
    a132811  
       2023-06-07 23:41:44 +08:00   ❤️ 1
    chrome 系的话,可以通过 extension 修改响应头绕过,就是得安装 cors extension 插件。

    或者试下能不能加 proxy 代理,让代理来修改响应的 cors 头
    leaflxh
        5
    leaflxh  
       2023-06-07 23:54:33 +08:00 via Android   ❤️ 1
    能改源码的话 electron 记得可以加过滤,然后针对匹配的网址的响应,手动添加 allow-origin 头,改不了的话服务端允许 app://.这个 origin 应该就行
    pdog18
        6
    pdog18  
    OP
       2023-06-08 21:58:52 +08:00
    因为都是第三方公司的 app ,所以都改不了源码,感觉似乎只有通过代理服务器(或者使用 Charles 或 Fiddler )来解决了。

    不过我一个前端仔对这个也不太了解,可能需要去学习一下了
    pdog18
        7
    pdog18  
    OP
       2023-06-08 22:02:35 +08:00
    问了一下 ChatGPT 似乎可以通过 nginx (也就是代理服务器?)来解决,我去学习一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5933 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:26 · PVG 11:26 · LAX 19:26 · JFK 22:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.