【Web】關於Session過期/失效的理解


一直好奇關於Session的過期,一種說法是關閉瀏覽器即Session失效,另一種說法是可以設置Session的過期時間,時間到了自動過期。

這兩種說法到底是怎么回事?Session過期跟Cookie過期又有什么關系?

 

網上搜了幾篇相關文章:

 

通過閱讀上面幾篇文章后,對Session過期有了新的理解,簡單總結一下:

  • Cookie保存在客戶端瀏覽器,Session保存在服務器。
  • Cookie可以設置過期時間。
    • 如果Cookie不包含到期日期,則可視為會話Cookie(Session Cookie)。會話Cookie存儲在客戶端的內存(瀏覽器占用的內存)中,決不會寫入磁盤。當瀏覽器關閉時,Cookie將從此永久丟失。
    • 如果Cookie包含到期日期,則可視為持久性Cookie,存儲在客戶端的磁盤中。在指定的到期日期,Cookie將從磁盤中刪除
  • 客戶端請求服務端時,如果客戶端的Cookie中沒有當前會話的Session Id,則服務端會新分配一個Session,並將與該Session對應的Session Id存到Cookie中發回給客戶端瀏覽器。
  • 由於大部分的網站在發回Session Id時使用了會話Cookie(即沒有設置過期時間),導致該Cookie存在客戶端內存中,所以關閉瀏覽器即丟失了Session Id信息,再次訪問服務端時才找不到對應的Session,於是才有了“關閉瀏覽器則Session過期”的說法!
  • 服務端在保存Session時也可以設置該Session的過期時間,服務端的Web服務容器通常也有一個默認的過期時間。若訪問服務器后,保持不關閉瀏覽器一段時間,超過Session過期時間后再次訪問,會發現依然Session過期找不到了(比如表現為跳轉到登錄頁面),則是“沒有關瀏覽器但Session過期了”!
  • 當(存放着Session Id的)Cookie和Session中兩者有任一過期,即宣告會話過期。

 

另外,關於Java中設置Session的過期,參考:http://www.cnblogs.com/diewufeixian/p/4221747.html

總結一下方法有三:

  • 在web容器中(如Tomcat)修改配置文件
  • 在工程的web.xml中設置
  • 創建Session后通過java代碼設置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM