【问题标题】:Using system proxy in browser and renderer process在浏览器和渲染器进程中使用系统代理
【发布时间】:2019-11-20 04:22:45
【问题描述】:

在我的电子应用程序中,我编写了一个在主进程和渲染器进程中执行的 RestClient。在主进程中完成的第一个请求是使用来自 electron 的 net 库完成的,它成功使用了系统代理设置。

在渲染器进程中执行的下一个请求不能使用net库,因为它只属于main。因此我切换到正常的 https 请求,但这不使用系统代理设置。

有没有办法在渲染器进程中使用系统代理?

编辑:也许是一个更普遍的问题:电子提出网络请求的最佳实践是什么?有没有一些标准的方式来使用 http/https、request、net 或 fetch?哪种方式会使用系统代理?

【问题讨论】:

  • 渲染进程使用IPC与主进程通信。因此,主要进程将与网络通信,然后将数据传输到渲染进程。所以我认为没有理由在渲染过程中使用代理。
  • @Asesh 好的。但是如何在使用操作系统的系统代理设置的渲染器中创建 REST 请求? (例如 windows 10)只有“net”库(仅在主进程中可用)使用它。
  • 我也很想知道这个问题的最佳实践方法。我有一个可以通过代理正常工作的主进程,但是一个拒绝使用代理的渲染器。我不完全确定为什么
  • @KevinZ01 我目前正在尝试和你做同样的事情,但是当我使用从电子到主进程的网络库时,它不使用系统代理。您是否刚刚使用 Net 库执行自动使用 OS 系统代理设置的请求?
  • 您能分享一下您的事件查看器异常消息吗?

标签: electron chromium


【解决方案1】:

我在 windows 上测试了这个,它在渲染器中使用 fetch() 运行顺利


但我认为此时的最佳做法是通过 ipcRenderer 从渲染器进程向主进程发送消息。

所以在你的渲染器进程中发送一条消息

const ipc = require('electron').ipcRenderer;
ipc.send('hello','a string', 10);

并在您的主进程中接收消息并像第一个一样发出您的 api 请求

ipc.on('fromMain', (event, messages) => {
    // do your api request and send data back
}

在此之后将数据发送回渲染器进程

为什么?
优点:前后端严格分离,API查询只有一种方法当然“不要重复自己”

【讨论】:

  • 我们也是这样处理的:)
猜你喜欢
  • 2013-11-07
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
相关资源
最近更新 更多