web應用程式是使用http協議來傳送資料的。而http是無狀態的協議。所以一旦http報文交換完成,客戶端和伺服器端就會誰也不認識誰了,這意味著伺服器無法從連線上跟蹤會話。即當使用者a購買了一件商品並放入購物車中,當再次購買該商品時,伺服器已經無法判斷是哪個使用者的會話了,所以才必須引入一種機制用於跟蹤會話。
cookie就是這樣的一種機制。因為http是無狀態的,伺服器是無法單單僅憑網路連線是無法知道客戶身份的。所以這個時候伺服器就會給客戶端發乙個通行證,每個客戶端乙個,無論誰訪問都必須攜帶自己的通行證,這樣伺服器就能從通行證上確認客戶的身份。
而這樣的通行證,也就是cookie,實際上是一小段文字資訊。當客戶端請求伺服器後,如果伺服器需要記錄該使用者狀態,就會使用response回覆報文向客戶端頒發乙個通行證cookie。而客戶端收到cookie後會將cookie儲存起來,當瀏覽器再次請求該網頁時,瀏覽器會連同cookie一同交給伺服器。伺服器檢查該cookie,以此辨認使用者狀態。
檢視某個網頁頒發的cookie很簡單,在瀏覽器位址處輸入j**ascript:alert(document.cookie)就可以了
如果瀏覽器不支援瀏覽器cookie就會被ban掉,比如大部分手機瀏覽器就不支援。
不同的瀏覽器會採用不同的方式儲存cookie,比如ie瀏覽器會在「c:\documents and settings\你的使用者名稱\cookies」資料夾下以文字檔案形式儲存,乙個cookie儲存乙個檔案。
session是另一種記錄客戶狀態的機制,不同的是cookie儲存在客戶端瀏覽器中,而session儲存在伺服器上。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上。這就是session。當客戶端瀏覽器再次訪問時只需要從該session中查詢客戶的狀態就可以了。
如果說cookie機制是通過檢查客戶身上的通行證
來確定客戶身份的話,那session機制就是通過檢查伺服器上的客戶明細表
來確認客戶身份的。
session相當於程式在伺服器上建立的乙份客戶檔案,客戶來訪時只需要查詢客戶檔案就可以了。
token也稱為令牌,是伺服器生成的一串字串,作為客戶端進行請求的乙個標識。
當使用者第一次登入後,伺服器會生成乙個token並將此token返回給客戶端,以後客戶端只需帶上這個token請求資料即可,無需再次帶上使用者名稱和密碼。(聽起來跟cookie有點像,但是跟cookie是由很大區別的,且聽我娓娓道來)
簡單token的組成:uid(使用者唯一的身份標識)、time(當前時間的時間戳)、sign(簽名,token的前幾位以雜湊演算法壓縮成一定長度的十六進製制字串,以防止token洩露)
cookie和session的詳解與區別 - 測試開發喵 - (cnblogs.com)
session cookie和cache的區別
其中cookie是儲存在客戶端的一組資料,主要用來儲存使用者名稱等個人資訊。session session用來儲存每乙個使用者的專有資訊 session的生存期是使用者持續請求時間加上一段時間 一般是20分鐘左右 session資訊是儲存在web伺服器記憶體中的,儲存資料量可大可小 由於使用者停止使...
session cookie 和token登入驗證
最近研究了下基於token的身份驗證,並將這種機制整合在個人專案中。現在很多 的認證方式都從傳統的seesion cookie轉向token校驗。對比傳統的校驗方式,token確實有更好的擴充套件性與安全性。傳統的session cookie身份驗證 由於http是無狀態的,它並不記錄使用者的身份。...
session cookie 和token登入驗證
最近研究了下基於token的身份驗證,並將這種機制整合在個人專案中。現在很多 的認證方式都從傳統的seesion cookie轉向token校驗。對比傳統的校驗方式,token確實有更好的擴充套件性與安全性。傳統的session cookie身份驗證 由於http是無狀態的,它並不記錄使用者的身份。...