HTTP是無狀態協議,它不對之前發生過得請求和響應的狀態進行保存管理。也就是說,無法根據之前的狀態進行本次的請求處理。
Cookie狀態管理
Web本身無法進行狀態的管理(不會記錄已登錄的狀態),那麼每次跳轉新頁面不是要再次登錄,就是要在請求報文中附加參數管理登陸狀態。
保留無協議特徵,同時又要解決類似的矛盾問題,於是引入了Cookie技術。Cookie技術通過在請求和響應報文中寫入Cookie信息來控制客戶端的狀態。
Cookie會根據從服務器端發送的響應報文內的一個叫Set-Cookie的首部字段信息,通知客戶端保存Cookie。當下次客戶端再次往服務器發送請求時,客戶端會自動在請求報文中加入Cookie值發送過去。
服務器發現客戶端發送過來的Cookie後,回去檢查究竟從哪個客戶端發送過來的鏈接請求,然後與服務器數據對比,最後得到之前的狀態信息。
第一次網絡請求
第二次以後
1.請求報文如下
GET /index.htm/ HTTP/1.1
Host: www.xxx.com
請求的首部字段內並沒有Cookiede的相關信息
2.響應報文(服務端生成Cookie信息)
HTTP/1.1 200 OK
Date: Thu, 12, 2015 10:10 GMT
Server: Apache
<Set-Cookie: sid=3124113412312; path=/; expires=Wed,=>10-Oct-15 10:10:10 GMT>
Content-Type: text/plain; charset=UTF-8
3.請求報文(自動發送保存着的Cookie信息)
GET /image/ HTTP/1.1
Host: www.xxx.com
Cookie: sid=3124113412312