我正在嘗試以無頭模式運行 Electron 以在遠程服務器上獲取需要前綴為 cookie 的內容__Host-。但是,用于運行的舊代碼
var cookie = {
url: cookieurl,
name: cookiename,
value: cookievalue
};
win.webContents.session.cookies.set(cookie)
.then(function(result)
{
loadUrl(win, indexUrl, output);
})
.catch(function(e)
{
throw Error("Failed to load cookie, e=" e);
});
只要cookiename不以__Host-. 當我嘗試使用前綴設定 cookie 時,__Host-我得到以下例外:
Error: Failed to parse cookie
但是,此限制未記錄在https://www.electronjs.org/docs/latest/api/cookies
uj5u.com熱心網友回復:
這個細節沒有記錄在https://www.electronjs.org/docs/latest/api/cookies的官方檔案中,但它是其他規則的邏輯結果。具體來說,Set-CookieHTTP 標頭被定義為遵循以下規則:
<cookie-name>=<cookie-value>
...
注意:有些<cookie-name>有特定的語意:
__Host-前綴:
名稱以 開頭的 Cookie__Host-必須使用secure標志設定,必須來自安全頁面 (HTTPS),不能domain指定(因此,不會發送到子域),并且路徑必須是/.
...
屬性
...
Secure可選
表示僅當使用該https:方案(除了 onlocalhost)發出請求時,cookie 才會發送到服務器,因此更能抵抗中間人攻擊。注意:不要假設
Secure阻止所有訪問 cookie 中的敏感資訊(會話密鑰、登錄詳細資訊等)。如果HttpOnly未設定 cookie 屬性,則仍然可以通過訪問客戶端硬碟或從 JavaScript 讀取/修改具有此屬性的cookie。不安全的站點 (http:) 無法使用該
Secure屬性設定 cookie (自 Chrome 52 和 Firefox 52 起)。對于 Firefox,當 localhost 設定 Secure 屬性時, https: 要求將被忽略(自 Firefox 75 起)。
具體來說,你可以不設定與名稱開頭的cookie__Host-前綴不也指定secure。因此,按照問題中的描述設定 cookie 失敗。不幸的是,例外只是Error: Failed to parse cookie而不是Error: cannot set cookie with "__Host-" prefix without also setting "secure" attribute.
以下應該按預期作業:
var cookie = {
url: cookieurl,
name: cookiename,
value: cookievalue,
secure: true,
// httpOnly: true,
// sameSite: "lax",
};
win.webContents.session.cookies.set(cookie)
.then(function(result)
{
loadUrl(win, indexUrl, output);
})
.catch(function(e)
{
throw Error("Failed to load cookie, e=" e);
});
上面的示例在注釋中還具有httpOnly和sameSite屬性,以提醒您可能也想考慮這些屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/371246.html
標籤:javascript 安全 饼干 电子
下一篇:本地到云漏洞掃描
