Session.cookies 是空的,而 JavaScript document.cookie 不是

Session.cookies is empty while JavaScript document.cookie is not

我想从 BrowserWindow 对象获取所有 cookie,包括 HTTPonly cookie。 我已经通读了以下代码将输出 BrowserWindow 中使用的所有 cookie 的文档: windowObject.webContents.session.cookies。 returns 一个空的 cookie 对象:Cookies: {}.

如果我使用以下代码,我会得到所有的 cookie,除了非常需要的 HTTPonly(出于安全目的不会返回):

return windowObject.webContents.executeJavaScript(`document.cookie;`,true).then(function(result){
 console.log(result);
});

问题证明; 将此代码放入您的 app.on('ready') 函数中:

const Window = electron.BrowserWindow;
var windowObject = new Window({show: true, webPreferences:{images:false}});
windowObject.loadURL("https://www.tweakers.net");
windowObject.webContents.on('did-finish-load', function() {
  console.log(windowObject.webContents.session);
  console.log(windowObject.webContents.session.cookies);
  windowObject.webContents.executeJavaScript(`document.cookie;`, true).then(function(result){
    console.log(result);
  });
});

Returns(这段被我截断了):

为什么会话 returns 没有 cookie?如何解决?

我正在使用 Electron:1.7.5

提前感谢您的帮助!

windowObject.webContents.session.cookies returns defaultSession 会话对象。这让我误以为有一个独特的 session 对象绑定到 windowObject 对象。

我的cookie可以通过以下代码获取:

const electron = require('electron');
const Window = electron.BrowserWindow;
var windowObject = new Window({show: true, webPreferences:{images:false}});
windowObject.loadURL("https://www.tweakers.net");
windowObject.webContents.on('did-finish-load', function() {
  windowObject.webContents.session.cookies.get({}, (error, cookies) => {
    console.log(cookies);
  });
});

也可以通过以下代码获取所有cookies:

const electron = require('electron');
const session = electron.session;

return session.defaultSession.cookies.get({}, (error, cookies) => {
  console.log(cookies);
});

例如,可以对这些进行过滤以获得属于某个域名的正确 cookie。要做到这一点,只需简单地使用:

anySessionObject.cookies.get({domain: "yourdomain.com"}, (error, cookies) => {
  console.log(cookies);
});

已在 GitHub 打开关于我的发现的票证。您可以在这里查看:https://github.com/electron/electron/issues/10364