1)總的來看Cookie像是服務器發給浏覽器的一張“會員卡”,浏覽器每次向服務器發 送請求時都會帶着這張“會員卡”,當服務器看到這張“會員卡”時就可以識别浏覽器的身份。
實際上這個所謂的“會員卡”就是服務器發送的一個響應頭:
2)如圖Set-Cookie這個響應頭就是服務器在向服務器發“會員卡”,這個響應頭的名字是Set-Cookie,後邊JSESSIONID=95A92EC1D7CCB4ADFC24584CB316382E和 Path=/Test_cookie,是兩組鍵值對的結構就是服務器為這個“會員卡”設置的信息。浏覽器收到該信息後就會将它保存到内存或硬盤中。
3)當浏覽器再次向服務器發送請求時就會攜帶這個Cookie信息:
這是浏覽器發送的請求報文,中間畫紅框的就是Cookie信息,這裡可以理解為浏覽器這次帶着“會員卡”再次訪問服務器。于是服務器就可以根據Cookie信息來判斷浏覽器的狀态。
原理圖如下:
優點:
- 通過良好的編程,控制保存在cookie中的session對象的大小。
- 通過加密和安全傳輸技術(SSL),減少cookie被破解的可能性。
- 隻在cookie中存放不敏感數據,即使被盜也不會有重大損失。
- 控制cookie的生命期,使之不會永遠有效。
缺點:
- Cookie數量和長度的限制。每個domain最多隻能有20條cookie,每個cookie長度不能超過4KB,否則會被截掉。
- 安全性問題。如果cookie被人攔截了,那人就可以取得所有的session信息。
- 有些狀态不可能保存在客戶端.