2017-08-26 6 views
1

HTTPonly Cookieを含む、すべてのCookieをBrowserWindowオブジェクトから取得したいと考えています。 私は、次のコードがBrowserWindowで使用されているすべてのクッキーを出力することをドキュメントを読んだ: windowObject.webContents.session.cookies。 空のクッキーオブジェクトCookies: {}を返します。JavaScript document.cookieがSession.cookieでない場合

私は、次のコードを使用している場合は、私は(セキュリティ上の目的に返却されていない)多くの必要なHTTPのみを除くすべてのクッキーを取得する実行します。問題の

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''を通してHTTPonly以外のクッキーを受け取ることもできます。私は、私が持っている問題を示すスクリプトをセットアップしようとします。 – Dragon54

+0

@artgb最初の投稿に問題の証拠を追加しました。 – Dragon54

答えて

0

windowObject.webContents.session.cookiesは、defaultSessionセッションオブジェクトを返します。それは、オブジェクトに結びついたユニークな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); 
    }); 
}); 

次のコードを介してすべてのクッキーを取得することも可能である:

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

関連する問題