javascript - Session.cookies 为空而 JavaScript document.cookie 不是

标签 javascript session cookies window electron

我想从 BrowserWindow 对象获取所有 cookie,包括 HTTPonly cookie。 我已经通读了以下代码将输出 BrowserWindow 中使用的所有 cookie 的文档: windowObject.webContents.session.cookies。 这将返回一个空的 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);
  });
});

返回(这是我 chop 的):

Truncated result from the commandline 为什么 session 不返回任何 cookie?如何解决?

我正在使用 Electron:1.7.5

提前感谢您的帮助!

最佳答案

windowObject.webContents.session.cookies 返回 defaultSession session 对象。这让我误以为有一个唯一的 session 对象绑定(bind)到 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

关于javascript - Session.cookies 为空而 JavaScript document.cookie 不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45894850/

相关文章:

Javascript 如何评估数字或特定字符串

java - 使用 Java 显示 FireFox cookie

php - 将 $_SERVER ['REQUEST_URI' ] 保存为 cookie 时的 float 后缀

hibernate - session 与 session 工厂之间的区别 - Hibernate?

c# - 在 C# MVC3 中跨 Controller 重用 session

java - session 属性未反射(reflect)在 JSP 中

java - 通过 HttpClient 接受所有 Cookie

javascript - 如何使用 D3JS 创建带有网格线的 SVG

javascript - Ruby on Rails - jQuery 使用 AJAX 获取数据

javascript - 当字符串位于数组中时,返回 JavaScript 中的长度字符串