【问题标题】:How does Postman (an electron app) get around CORS?Postman(一个电子应用程序)如何绕过 CORS?
【发布时间】:2019-11-25 10:53:15
【问题描述】:

正如大多数人所知,Postman 是用 Electron 制造的。但是,它在尝试进行 API 调用时不会遇到 CORS 问题。但是,如果普通用户打包了一个使用 Fetch/XHR 进行 API 调用的简单电子应用程序,它们将被具有 CORS 策略的端点阻止。我的问题是,Postman 如何解决这个问题,Electron 中是否有一个设置或标志可以让我自己的应用程序做同样的事情?我读到herehere 说“Postman 是一个开发工具”,但这不是一个深入的回应,因为 Postman 是一个理论上可以在 Chromium(又名浏览器)中运行的 Electron 应用程序。如果有人能在这个主题上取得一些进展,我将不胜感激!

【问题讨论】:

    标签: cors electron fetch postman


    【解决方案1】:

    不要忘记,electron 不仅仅是 Chromium,它还封装了一个 Node.js。它也可以发出 HTTP 请求。没有任何同源策略,因此没有 CORS 限制。

    我怀疑 Postman 实际上是从其节点部分(主进程)执行 HTTP 请求。

    【讨论】:

    • Postman 是否有可能通过某种内部代理路由请求?
    • 有什么用?您可以将电子主进程视为这样的“内部代理”,但在这种情况下它是无关紧要的,因为没有什么可以迫使 Postman 从 Chromium 渲染器进程发起其请求。通过从 Node 主进程启动请求,没有 SOP,因此不需要代理。
    • 这大概就是 Postman 的做法吧。正是出于这个原因,我在自己的 Electron 应用程序中做了同样的事情。使用 Electron 内置的 IPC 模块非常容易。
    • 我使用了request,但你也可以使用http。我从asking the main process 开始执行请求。然后我use request and send back the relevant data。然后我可以listen for the response in the renderer(又名镀铬窗口)。
    • @CoryCoolguy 非常好的例子!谢谢你提醒我反恐精英仍然是这样的事情。我喜欢这种创造性地使用 OSS 进行自定义 ;-)
    【解决方案2】:

    您可以在 Electron (Chromium) 上禁用网络安全。这将使您能够绕过 CORS。

    https://stackoverflow.com/a/55741491/3947422 https://github.com/electron/electron/issues/23664#issuecomment-631674094

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 2018-12-17
      • 2019-09-23
      • 2021-11-04
      • 2021-05-19
      • 2021-03-03
      • 2017-09-04
      • 2019-12-23
      • 2019-10-15
      相关资源
      最近更新 更多