Session 在Electron中的渲染器和主进程之间共享cookie和会话

Session 在Electron中的渲染器和主进程之间共享cookie和会话,session,authentication,cookies,electron,desktop,Session,Authentication,Cookies,Electron,Desktop,当创建一个电子桌面应用程序,为用户执行基本身份验证时,我们加载一个浏览器窗口,并加载一个登录表单。此表单在提交时,基本上执行POST-to URL,以验证和授权用户获取更多特权信息。如果身份验证成功,将设置用户的会话,以便浏览器窗口中的未来请求使用用户的身份验证会话 但是,我还没有看到渲染器进程(BrowserWindow)中的会话可以存储到主进程的情况,因此如果主进程需要发出请求,它可以使用相同的经过身份验证的会话。如何允许主进程共享渲染器进程用于其需要发出的任何请求的会话和cookie TL

当创建一个电子桌面应用程序,为用户执行基本身份验证时,我们加载一个浏览器窗口,并加载一个登录表单。此表单在提交时,基本上执行POST-to URL,以验证和授权用户获取更多特权信息。如果身份验证成功,将设置用户的会话,以便浏览器窗口中的未来请求使用用户的身份验证会话

但是,我还没有看到渲染器进程(BrowserWindow)中的会话可以存储到主进程的情况,因此如果主进程需要发出请求,它可以使用相同的经过身份验证的会话。如何允许主进程共享渲染器进程用于其需要发出的任何请求的会话和cookie

TL;DR:用户已成功登录Electron中的浏览器窗口。在用户通过身份验证后,如何使用与Browser窗口中的会话相同的会话在主进程中发出请求?

您是否尝试过以下方法:
您可以使用IPC模块在browserWindow和main.js之间共享数据:

Electron渲染器进程使用Chromium请求管道。 Electron主进程使用node.js请求管道

除了cookie/会话引发的问题外,来自主进程的node.js HTTPS请求在Windows证书存储中安装了自定义根证书的公司网络上不起作用

解决此问题的最简单方法是通过渲染器进程运行所有请求。有一些代码可以简化此过程:

import { requireTaskPool } from 'electron-remote';

const remoteAjax = requireTaskPool(require.resolve('electron-remote/remote-ajax'));

// Result is the object that XmlHttpRequest gives you
let result = await remoteAjax.get('https://httpbin.org/get');
console.log(result.url)

>>> 'https://httpbin.org/get'