2012-08-12 79 views
3

用於websockets我必須從cookie中公開我的sessionid。Javascript:從cookie中讀出會話ID

我尋覓了一下,發現我應該能夠訪問餅乾:

console.log(document.cookie); 

不幸的是,這並不工作或更好的document.cookie包含一個空字符串甚至鍍本身就說明了我的餅乾也認證工程。

鉻可以隱藏cookie的JavaScript嗎?

回答

6

如果將服務器配置爲發送會話cookie爲the HttpOnly flag,則會發生這種情況。通過這種方式,Cookie變得對JS等客戶端腳本語言不可見/不可訪問。

要實現您的具體功能要求,可以重新配置服務器,使之不這樣做,或尋找其他方法,例如,設置一個自定義cookie(當然,不包含HttpOnly標誌),或者讓服務器端視圖技術動態地將當前會話ID打印爲JS變量或某個HTML元素的屬性,以便JS可以通過遍歷HTML DOM 。

+0

嗨,我需要一些時間來尋找爲什麼cookie:{httpOnly:false}不能在express中工作。然而你的回答聽起來很合理將httpOnly標誌更改爲false有什麼缺點嗎? – bodokaiser 2012-08-12 18:07:14

+0

你可以在同一個Chrome cookies表中確認它是否真的是'HttpOnly'。至於服務器配置,請隨時提出一個新問題。我至少從來沒有聽說過「快遞」服務器。至於缺點,它只會增加成功的XSS攻擊的風險,但如果您在重新顯示期間正確地HTML轉義任何用戶控制的數據,則無需擔心。 – BalusC 2012-08-12 18:11:27

+0

好的。我需要知道的一切。 Byside express是一個類似於node.js的senetra(RoR)框架 – bodokaiser 2012-08-12 18:19:54