天天看點

http的cookie和session

Cookie和Session都為了用來儲存狀态資訊,都是儲存用戶端狀态的機制,它們都是為了解決HTTP無狀态的問題而所做的努力。 如果直接在浏覽器輸入服務端資源的url來請求該資源,那麼Session是比對不到的,可以根據這個來獲得使用者的資訊。 Session可以用Cookie來實作,也可以用URL回寫的機制來實作,當然如果用戶端禁用cookie的話,隻能用URL回寫來實作。用Cookie來實作的Session可以認為是對Cookie更進階的應用。

Cookie和Session有以下明顯的不同點:

1)Cookie将狀态儲存在用戶端,Session将狀态儲存在伺服器端;

2)Cookies是伺服器在本地機器上存儲的小段文本并随每一個請求發送至同一個伺服器。Cookie最早在RFC2109中實作,後續RFC2965做了增強。網絡伺服器用HTTP頭向用戶端發送cookies,在客戶終端,浏覽器解析這些cookies并将它們儲存為一個本地檔案,它會自動将同一伺服器的任何請求縛上這些cookies。Session并沒有在HTTP的協定中定義;

3)Session是針對每一個使用者的,變量的值儲存在伺服器上,用一個sessionID來區分是哪個使用者session變量,這個值是通過使用者的浏覽器在通路的時候傳回給伺服器,當客戶禁用cookie時,這個值也可能設定為由get來傳回給伺服器;

4)就安全性來說:當你通路一個使用session 的站點,同時在自己機子上建立一個cookie,建議在伺服器端的SESSION機制更安全些.因為它不會任意讀取客戶存儲的資訊。

  •  Cookie流程

伺服器在響應消息中用Set-Cookie頭将Cookie的内容回送給用戶端,用戶端在新的請求中将相同的内容攜帶在Cookie頭中發送給伺服器。進而實作會話的保持。

http的cookie和session

如果用戶端禁用cookie的話,還有一種辦法實作:URL回寫 URL回寫是指伺服器在發送給浏覽器頁面的所有連結中都攜帶JSESSIONID的參數,這樣用戶端點選任何一個連結都會把JSESSIONID帶回給伺服器,以達到狀态維持的目的。

  • session流程

Session機制是一種伺服器端的機制,伺服器使用一種類似于散清單的結構(也可能就是使用散清單)來儲存資訊。

當程式需要為某個用戶端的請求建立一個session的時候,伺服器首先檢查這個用戶端的請求裡是否已包含了一個session辨別 - 稱為 session id,如果已包含一個session id則說明以前已經為此用戶端建立過session,伺服器就按照session id把這個 session檢索出來使用(如果檢索不到,可能會建立一個),如果用戶端請求不包含session id,則為此用戶端建立一個session并且生成一個與此session相關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字元串,這個 session id将被在本次響應中傳回給用戶端儲存。

http的cookie和session

來源:http://www.blogjava.net/amigoxie/archive/2009/12/03/304634.html

繼續閱讀