Postman(一个电子应用程序)如何绕过 CORS?
Posted
技术标签:
【中文标题】Postman(一个电子应用程序)如何绕过 CORS?【英文标题】:How does Postman (an electron app) get around CORS? 【发布时间】:2019-11-25 10:53:15 【问题描述】:正如大多数人所知,Postman 是用 Electron 制造的。但是,它在尝试进行 API 调用时不会遇到 CORS 问题。但是,如果普通用户打包了一个使用 Fetch/XHR 进行 API 调用的简单电子应用程序,它们将被具有 CORS 策略的端点阻止。我的问题是,Postman 如何解决这个问题,Electron 中是否有一个设置或标志可以让我自己的应用程序做同样的事情?我读到here 和here 说“Postman 是一个开发工具”,但这不是一个深入的回应,因为 Postman 是一个理论上可以在 Chromium(又名浏览器)中运行的 Electron 应用程序。如果有人能在这个主题上取得一些进展,我将不胜感激!
【问题讨论】:
【参考方案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://***.com/a/55741491/3947422 https://github.com/electron/electron/issues/23664#issuecomment-631674094
【讨论】:
以上是关于Postman(一个电子应用程序)如何绕过 CORS?的主要内容,如果未能解决你的问题,请参考以下文章