2009-04-15 86 views
3

我讀到的關於cookie的一切都表明,將cookie的到期時間設置爲零應使其成爲「會話」cookie,瀏覽器在退出時會將其刪除。Web瀏覽器是否應該在退出時刪除所有`session'(expiry = 0)cookie?

http://www.cookiecentral.com/faq/說:

「......一般一個會話的時間長度,瀏覽器是開放的......」

http://php.net/manual/en/function.setcookie.php說:

「如果設置爲0或省略,cookie將在會話結束時(瀏覽器關閉時)過期。」

然而,一些在火狐試驗(3.0.8)表明:

  • 的cookies設置爲會議安全得到退出刪除設置爲會議
  • 餅乾只做不是在退出時被刪除

Opera(9.64)的行爲如同I會期望,在退出時刪除會話cookie是否設置爲安全或不安全。

我希望能夠在我正在開發的網絡應用程序中使用此功能(將一個安全的cookie和一個不安全的cookie作爲「已登錄」的標誌並讓它們一起到期,時間或0爲一個會話),但它似乎即使它在標準,然後瀏覽器不足以依靠它:/

這是一個瀏覽器中的錯誤,預期的行爲,和/或是會話cookie的實際生命週期沒有在標準中真正定義?

回答

7

你不應該依賴於客戶端功能。

您正在使用的功能通常實現存儲會話ID客戶端和真實用戶信息服務器端(其ID,無論他是否已登錄,他的個人信息等)。

也要記住每個請求中發送的Cookie,因此您存儲在cookie中的Cookie越少越好。

+1

請注意,「永不依賴」並不意味着您不能嘗試利用客戶端功能。設置cookie過期時間應該可以工作,但要確保服務器端代碼處理舊的無效cookie。 – dwc 2009-04-15 15:34:08