會話跟蹤是一種靈活的機制,雖然HTTP是一種無狀態協議,但會話跟蹤技術使Web上的狀態編程成為可能,目前普遍存在四種會話跟蹤技術:URL重寫、隱藏表單域、Cookie、Session。 1 隱藏表單域 特點 (參數存放)參數是存放在請求實體里的,因此沒有長度限制,但是不支持 GET 請求方法,因為 ...
會話跟蹤是一種靈活的機制,雖然HTTP是一種無狀態協議,但會話跟蹤技術使Web上的狀態編程成為可能,目前普遍存在四種會話跟蹤技術:URL重寫、隱藏表單域、Cookie、Session。
1 隱藏表單域
<input type="hidden" id="xxx" value="xxx">
- 特點
- (參數存放)參數是存放在請求實體里的,因此沒有長度限制,但是不支持 GET 請求方法,因為 GET 沒有請求實體
- (Cookie禁用)當Cookie被禁用時依舊能夠工作
- (持久性)不存在持久性,一旦瀏覽器關閉就結束
2 URL 重寫
可以在 URL 後面附加參數,和伺服器的請求一起發送,這些參數為鍵/值對
- 特點
- (參數存放)參數是存放在 url 里的,有1024長度限制
- (Cookie禁用)當Cookie被禁用時依舊能夠工作
- (持久性)不存在持久性,一旦瀏覽器關閉就結束
3 Cookie
Cookie 是瀏覽器保存的一個小文件,其包含多個鍵值對
伺服器首先使用 Set-Cookie 響應頭傳輸多個參數給瀏覽器,瀏覽器將其保存為 Cookie,後續對同一伺服器的請求都使用
Cookie 請求頭將這些參數傳輸給伺服器
- 特點
- (參數存放)參數是存放在請求頭部里的,也存在長度限制,但這個限制是伺服器配置的限制,可以更改
- (Cookie禁用)可能會禁用Cookie
- (持久性)瀏覽器可以保存Cookie一段時間,在此期間Cookie持續有效
4 Session
基於前三種會話跟蹤技術之一(一般是基於Cookie技術基礎,如果瀏覽器禁用Cookie則可以採用URL重寫技術),在每一次請求中只傳輸唯一一個參數:JSESSIONID,即會話id,伺服器根據此會話id開闢一塊會話記憶體空間,以存放其他參數
- 特點
- 會話數據全部存放在服務端,減輕了客戶端及網路壓力,但加劇了服務端壓力
- 既然是基於前三種會話技術之一(Cookie、url重寫、隱藏表單域),因此也具備其對應的幾個特點