引言:
在計算機通信網絡中,網絡協議是必不可少。其中超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器。
然而HTTP協議是無狀態的協議。一旦數據交換完畢,客戶端與服務器端的連接就會關閉,再次交換數據需要建立新的連接。這就意味著服務器無法從連接上跟蹤用戶登錄網站後的一系列動作,這一系列動作我們稱之為會話,比如瀏覽商品添加到購物車併購買。
會話跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。在這篇博客裡,我們來看看這兩個技術的區別。
Cookie:
Cookie實際上是一小段的文本信息。在客戶端請求服務器時,如果服務器需要記錄該用戶狀態,如用戶信息等,就使用response對象向客戶端瀏覽器頒發一個Cookie。客戶端會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。工作原理如下:
引言:
在計算機通信網絡中,網絡協議是必不可少。其中超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器。
然而HTTP協議是無狀態的協議。一旦數據交換完畢,客戶端與服務器端的連接就會關閉,再次交換數據需要建立新的連接。這就意味著服務器無法從連接上跟蹤用戶登錄網站後的一系列動作,這一系列動作我們稱之為會話,比如瀏覽商品添加到購物車併購買。
會話跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。在這篇博客裡,我們來看看這兩個技術的區別。
Cookie:
Cookie實際上是一小段的文本信息。在客戶端請求服務器時,如果服務器需要記錄該用戶狀態,如用戶信息等,就使用response對象向客戶端瀏覽器頒發一個Cookie。客戶端會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。工作原理如下:
1. 客戶端第一次向服務器發起請求
2. 服務器準備一個cookie,將需緩存的內容設置到cookie中
3. 服務器將請求響應結果與cookie一起回饋給客戶端
4. 客戶端處理請求的響應與讀取cookie
5. 客戶端再次向服務器發送請求
6. 服務器檢查傳來的cookie,辨認狀態,並返回響應結果
Session:
Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。
客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。當客戶端瀏覽器再次訪問時只需要從該Session中查找該客戶的狀態就可以了。
每個用戶訪問服務器都會建立一個session,那服務器是怎麼標識用戶的唯一身份呢?事實上,用戶與服務器建立連接的同時,服務器會自動為其分配一個SessionId。工作原理如下:
引言:
在計算機通信網絡中,網絡協議是必不可少。其中超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器。
然而HTTP協議是無狀態的協議。一旦數據交換完畢,客戶端與服務器端的連接就會關閉,再次交換數據需要建立新的連接。這就意味著服務器無法從連接上跟蹤用戶登錄網站後的一系列動作,這一系列動作我們稱之為會話,比如瀏覽商品添加到購物車併購買。
會話跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。在這篇博客裡,我們來看看這兩個技術的區別。
Cookie:
Cookie實際上是一小段的文本信息。在客戶端請求服務器時,如果服務器需要記錄該用戶狀態,如用戶信息等,就使用response對象向客戶端瀏覽器頒發一個Cookie。客戶端會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。工作原理如下:
1. 客戶端第一次向服務器發起請求
2. 服務器準備一個cookie,將需緩存的內容設置到cookie中
3. 服務器將請求響應結果與cookie一起回饋給客戶端
4. 客戶端處理請求的響應與讀取cookie
5. 客戶端再次向服務器發送請求
6. 服務器檢查傳來的cookie,辨認狀態,並返回響應結果
Session:
Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。
客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。當客戶端瀏覽器再次訪問時只需要從該Session中查找該客戶的狀態就可以了。
每個用戶訪問服務器都會建立一個session,那服務器是怎麼標識用戶的唯一身份呢?事實上,用戶與服務器建立連接的同時,服務器會自動為其分配一個SessionId。工作原理如下:
1. 客戶端第一次向服務器發起請求
2. 服務器創建一個新的Session,生成sessionid,並把這次請求的信息放入到session中
3. 服務器將生成的sessionid放在一個cookie中與響應一起返回給客戶端瀏覽器
4. 客戶端再次訪問改網頁,將瀏覽器中存儲的sessionid發送到服務器中
把該sessionid與所有的session進行比較,找到對應的sessionid,並將內容取出
Cookie與Session的區別:
綜合上述Cookie與Session的工作原理,我們很容易看出Cookie與Session的區別。
1. cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
2. cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session。
3. session會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能,考慮到減輕服務器性能方面,應當使用cookie。
4. 單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
5. 可以考慮將登陸信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中。