pdog18
V2EX  ›  问与答

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

  •  
  •   pdog18 · Jun 7, 2023 · 1770 views
    This topic created in 1249 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

    不过我一个前端仔对这个也不太了解,可能需要去学习一下了
    pdog18
    pdog18
    OP
    Jun 8, 2023
    7
    问了一下 ChatGPT 似乎可以通过 nginx (也就是代理服务器?)来解决,我去学习一下
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1606 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:20 · PVG 17:20 · LAX 01:20 · JFK 04:20
    ♥ Do have faith in what you're doing.