2017-08-26 39 views
1

我想從BrowserWindow對象中獲取所有cookie,包括HTTP僅cookie。 我已閱讀了以下代碼將輸出BrowserWindow中使用的所有Cookie的文檔: windowObject.webContents.session.cookies。 這將返回一個空的cookie對象:Cookies: {}Session.cookies爲空而JavaScript document.cookie不是

如果我使用下面的代碼,我得到除了急需的HttpOnly所有的餅乾(這是不是因爲安全起見返回):這個問題的

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

證明; 將此代碼您app.on內( '準備好')功能:

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); 
    }); 
}); 

返回(這是由我截斷):

Truncated result from the commandline 爲什麼會話回報沒有餅乾?這怎麼解決?

我使用的是電子:1.7.5

感謝您的幫助提前!

+0

@artgb對不起,這是不可能的。不過,我確信現在我調用''session.cookies'',我也可以通過''executeJavaScript''接收非HTTP的cookie。我將嘗試設置一個腳本來顯示我遇到的問題。 – Dragon54

+0

@artgb我在初始文章中添加了問題的證明。 – Dragon54

回答

0

windowObject.webContents.session.cookies返回defaultSession會話對象。這使我錯誤地認爲有一個與windowObject對象綁定的唯一session對象。

在我的情況的餅乾可以通過下面的代碼檢索:

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); 
    }); 
}); 

也可以通過下面的代碼來獲取所有cookie:

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