1. 程式人生 > >什麼是cookie,什麼是session,cookie和session的區別

什麼是cookie,什麼是session,cookie和session的區別

會話跟蹤
1. 什麼是會話
  * 使用者撥打10086,從服務檯接通後會話開始;
  * 使用者發出話費查詢請求,服務檯響應。這是該會話中的一個請求;
  * 使用者發出套餐變更請求,服務檯響應。這是該會話中的又一個請求;
  * ...
  * 使用者結束通話電話,會話結束。
2. 會話的特性
  * 一個會話中可能包含多個請求;
  * 一個會話中發出請求的使用者是唯一的;
3. JavaWeb會話
  * 從使用者開啟本站第一個頁面開始,會話也開始了;
  * 使用者會發出0~n個請求;
  * 使用者關閉瀏覽器會話結束了。
4. 什麼是會話跟蹤技術
  HTTP是無狀態協議,也就是沒有記憶力的協議,每個請求之間無法共享資料。這就無法知道會話什麼時候開始,什麼時候結束,也無法確定發出請求的使用者身份。這說明需要使用額外的手段來跟蹤會話!

  * 在一個會話中共享資料即會話跟蹤技術

Cookie
1. 什麼是Cookie
* Cookie是HTTP協議的規範之一,它是伺服器和客戶端之間傳輸的小資料。
* 首先由伺服器通過響應頭把Cookie傳輸給客戶端,客戶端會將Cookie儲存起來。
* 當客戶端再次請求同一伺服器時,客戶端會在請求頭中新增該伺服器儲存的Cookie,傳送給伺服器。
* Cookie就是伺服器儲存在客戶端的資料!
* Cookie就是一個鍵值對!!!
2. Cookie規範
* Cookie通過請求頭和響應頭在伺服器與客戶端之間傳輸;
* Cookie大小限制在4KB之內;
* 一臺伺服器在一個客戶端最多儲存20個Cookie;
* 一個瀏覽器最多可以儲存300個Cookie;
雖然Cookie規範是如此,但在今天,瀏覽器廠商的競爭異常激烈,所以多少會超出Cookie規則的限制。但也不會超出過多!

Session

1.什麼是session

在WEB開發中,伺服器可以為每個使用者瀏覽器建立一個會話物件(session物件),注意:一個瀏覽器獨佔一個session物件(預設情況下)。因此,在需要儲存使用者資料時,伺服器程式可以把使用者資料寫到使用者瀏覽器獨佔的session中,當用戶使用瀏覽器訪問其它程式時,其它程式可以從使用者的session中取出該使用者的資料,為使用者服務。

2. session的原理
  session是依賴Cookie實現的。session是伺服器端物件
  當用戶第一次使用session時(表示第一次請求伺服器),伺服器會建立session,並建立一個Cookie,在Cookie中儲存了session的id,傳送給客戶端。這樣客戶端就有了自己session的id了。但這個Cookie只在瀏覽器記憶體中存在,也就是說,在關閉瀏覽器視窗後,Cookie就會丟失,也就丟失了sessionId。
  當用戶第二次訪問伺服器時,會在請求中把儲存了sessionId的Cookie傳送給伺服器,伺服器通過sessionId查詢session物件,然後給使用。也就是說,只要瀏覽器容器不關閉,無論訪問伺服器多少次,使用的都是同一個session物件。這樣也就可以讓多個請求共享同一個session了。
  當用戶關閉了瀏覽器視窗後,再開啟瀏覽器訪問伺服器,這時請求中沒有了sessionId,那麼伺服器會建立一個session,再把sessionId通過Cookie儲存到瀏覽器中,也是一個新的會話開始了。原來的session會因為長時間無法訪問而失效。

  當用戶開啟某個伺服器頁面長時間沒動作時,這樣session會超時失效,當用戶再有活動時,伺服器通過使用者提供的sessionId已經找不到session物件了,那麼伺服器還是會建立一個新的session物件,再把新的sessionId儲存到客戶端。這也是一個新的會話開始了。

 session與瀏覽器
 session物件是儲存在伺服器端的,而sessionId是通過Cookie儲存在客戶端的。
 因為Cookie不能在多個瀏覽器中共享,所以session也不能在多個瀏覽器中共享。也就是說,使用IE登入後,再使用FireFox訪問伺服器還是沒有登入的狀態。

 而且同時開啟多個相同瀏覽器的視窗,是在使用同一session。如果你使用的是老瀏覽器,例如IE6,那麼就會每個視窗一個session。

Session和Cookie的主要區別

  • Cookie是把使用者的資料寫給使用者的瀏覽器。
  • Session技術把使用者的資料寫到使用者獨佔的session中。
  • Session物件由伺服器建立,開發人員可以呼叫request物件的getSession方法得到session物件。
我自己的理解,你現在用火狐登入了hdu,你再用他開啟其他頁面不用重新登入這就是seesion。你關閉瀏覽器後再開啟,登入時上邊已經儲存了使用者名稱密碼就是cookie