會話cookie和持久化cookie實現session機制

  當你第一次訪問一個網站的時候,網站服務器會在響應頭內加上Set-Cookie:PHPSESSID=nj1tvkclp3jh83olcn3191sjq3(php服務器),或Set-Cookie JSESSIONID=nj1tvkclp3jh83olcn3191sjq3(java服務器)信息,此信息是服務器隨機生成的,放在服務器內存裏,爲了標識唯一的客戶端用戶,內容不會重複,這就是sessionid.
當瀏覽器得到這個sessionid會將它放在自己的進程內存裏,這裏不同的瀏覽器會有所不同,IE進程間不能共享這個sessionid,也就是新開一個IE將不能共享這個sessionid;而Firefox進程間可以共享.然後你繼續發請求給這個網站的時候,瀏覽器就會把這個sessionid放在請求頭裏發送給該服務器了,這樣服務器得到sessionid後再和自己內存裏存放的sessionid對比鎖定客戶端,從而區分不同客戶端,完成會話.
可以看出如果用這種方式,當用戶在會話的過程中關閉瀏覽器結束進程,則這個sessionid將消失,如果用戶又打開瀏覽器想繼續這次會話的時候,就會因爲發送的請求中沒有這個sessionid而使服務器無法辨別該把那個session信息給他,注意(這個時候服務器端的sessionid和sessionid所指向的session都還存在,只是沒有正確的sessionid和它匹配而佔用服務器內存,只有session過期或服務器重啓才釋放內存).
上面這種方式叫會話cookie,把cookie放在瀏覽器內存裏,只能在這個瀏覽器的內存範圍裏完成會話,是一種不長久的方式,爲了能長久會話,就出現了持久化cookie,把cookie固化在用戶的計算機上,現在的cookie不單單能存放sessionid,還能放用戶信息,樣式表信息等.
如果用戶禁止了所有cookie的使用,那麼會話cookie和持久化cookie都不能用了,有個方案也可以解決問題,就是URL重寫,這裏要說下的就是URL重寫只能實現會話cookie的效果,持久會話實現不了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章