關了瀏覽器再開,怎么session還在?


關了瀏覽器session當然仍然存在,因為session是儲存在服務器端的,而服務器是不可能知道你有沒有關掉瀏覽器。

服務器只是簡單的保持session接受用戶請求,只有當session一段時間沒有被請求(比如30分鍾以后),服務器才會把session作廢。客戶端與服務器交互session的時候,客戶端會生成一個cookie,這個cookie包含了當前session的ID號。你再次打開瀏覽器的時候,瀏覽器會發送這個ID號,如果此時session還沒失效的話,服務器就能通過ID號識別出你,從而繼續交互session。一般來講如果服務器關閉,那么所有的session都會消失。

還有,session的setAttribute根本不是用來設置session的過期時間的。設置過期時間是在web.xml里面,或者session的setMaxInactiveInterval方法。

 

來自:http://www.jobui.com/mianshiti/it/web/5078/

 

在談論session機制的時候,常常聽到這樣一種誤解“只要關閉瀏覽器,session就消失了”。其實可以想象一下會員卡的例子,除非顧客主動對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。對session來說也是一樣的,除非程序通知服務器刪除一個session,否則服務器會一直保留,程序一般都是在用戶做log off的時候發個指令去刪除session。然而瀏覽器從來不會主動在關閉之前通知服務器它將要關閉,因此服務器根本不會有機會知道瀏覽器已經關閉,之所以會有這種錯覺,是大部分session機制都使用會話cookie來保存session id,而關閉瀏覽器后這個session id就消失了,再次連接服務器時也就無法找到原來的session。如果服務器設置的cookie被保存到硬盤上,或者使用某種手段改寫瀏覽器發出的HTTP請求頭,把原來的session id發送給服務器,則再次打開瀏覽器仍然能夠找到原來的session。 

    恰恰是由於關閉瀏覽器不會導致session被刪除,迫使服務器為seesion設置了一個失效時間,當距離客戶端上一次使用session的時間超過這個失效時間時,服務器就可以認為客戶端已經停止了活動,才會把session刪除以節省存儲空間。

來自:http://justsee.iteye.com/blog/1570652


免責聲明!

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



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