cookies manager - Firefox會話cookie





session (7)


兩個想法:

  1. 你的會話管理器有問題(包含在FF3中的或包含在擴展中的,比如tabmixplus)
  2. 使用Firebug + FireCookie( https://addons.mozilla.org/en-US/firefox/addon/6683 )進行調試!

一般來說,當給定一個沒有到期期限的cookie時,現代瀏覽器會認為這個cookie是一個'會話cookie',它們將在瀏覽會話結束時(通常在瀏覽器實例關閉時)刪除cookie。

IE,Opera,Safari和Chrome都支持這種行為。

然而Firefox(3.0.9最新版本正式發布)似乎沒有遵循這個規則,從我可以告訴它不會在瀏覽器關閉時或者當用戶註銷或重新啟動操作系統時將cookies過期。

那麼,為什麼Firefox會將它們稱為會話cookie,當它們持續無限期地持續?

有誰知道Firefox如何處理會話cookie到期?




我不同意上面的meandmycode。

HTTP規範https://www.ietf.org/rfc/rfc6265.txt講述客戶端應該如何處理帶有過期時間的Set-Cookie頭文件:

如果服務器希望用戶代理將Cookie保存在多個“會話”(例如,用戶代理重新啟動)上,則服務器可以在Expires屬性中指定到期日期。 請注意,如果用戶代理的Cookie存儲超出配額或者用戶手動刪除服務器的cookie,則用戶代理可能會在到期日期之前刪除cookie。

這樣做的邏輯延伸是,服務器必須要求瀏覽器在退出時不維護Cookie的唯一方式是設置任何Expires值(即會話cookie)。 如果瀏覽器不遵守該語義,那麼它不尊重服務器的響應。

基本上,用戶代理正在決定忽略服務器請求,並且像設置了Expires值一樣工作。




那對我來說是令人不安的。 我的系統已設置好,用戶可以點擊退出,從而銷毀所有會話Cookie。 但是,如果用戶關閉瀏覽器而未真正選擇退出,我希望會話cookie被清除。

我實際上用Google Chrome,IE 9測試了它,並且工作正常。 但Firefox不願意殺死這個“會話”(如Firebug所報導的)cookie。

好。 這就是我所做的。 我選擇了從FireFox主菜單退出,從那時起,按預期做得很好(不知道為什麼)。




這在共享用戶環境中有點令人擔憂。 如果我設置了一個在會話結束時設置為過期的身份驗證cookie。 在瀏覽器關閉並且另一個用戶啟動Firefox後,這將在Firefox中持續存在。 由於某種原因,Cookie設置了失效日期!




這顯然是通過設計。 看看這個Bugzilla的bug: https://bugzilla.mozilla.org/show_bug.cgi?id=443354 ://bugzilla.mozilla.org/show_bug.cgi https://bugzilla.mozilla.org/show_bug.cgi?id=443354 id https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox具有關閉Firefox的功能,它提供了保存所有選項卡的功能,然後您還原瀏覽器並返回這些選項卡。 這就是所謂的會話恢復。 我沒有意識到的是,它也會恢復這些頁面的所有會話cookie! 它像你從未關閉瀏覽器一樣對待它。

這是有道理的,如果你的瀏覽器崩潰了,你會立即回到你所在的位置,但是對於用於會話cookie的web開發人員來說,這有點令人不安。 我從幾個月前就收到了一些舊會話Cookie,這些Cookie是由我一直在標籤頁中打開的網站設置的。

要測試這一點,請關閉瀏覽器中的所有選項卡,然後關閉瀏覽器並重新啟動它。 在這種情況下,我認為您的網站會話Cookie應該清楚。 否則,你必須關閉會話恢復。




我很沮喪,Mozilla已經離開了這個世界,因為它已經有好幾年了。

好的..所以我退出了FF並關閉了電腦。 第二天,FF啟動並打開最後一組頁面(非常方便的功能),但它恢復會話,並且我重新登錄到沒有“保存我的設置”功能的網站。 我知道,因為他們是我建造的網站。 無論我使用php ini設置做什麼,會話都會恢復。

他們絕對不應該恢復。 頁面是,但會話與cookie ini設置為'0'沒有。

我不明白為什麼這不會被標記為安全漏洞。 當然,我可以在服務器端進行一些額外的檢查,根據上次登錄的時間來查看是否允許登錄,但不應該需要。

會話不應該持續。 FF正在操縱cookie過期設置。




您可以在Mozilla網站上使用該庫

你可以設置和獲取這樣的cookie

docCookies.setItem(name, value);
docCookies.getItem(name);






firefox cookies session