Cookie Session機制詳解

2021-06-29 05:53:06 字數 1642 閱讀 3962

cookie通過在客戶端記錄資訊確定使用者身份,session通過在伺服器端記錄資訊確定使用者身份。

cookie機制

理論上,乙個使用者的所有請求操作都應該屬於同乙個會話,而另乙個使用者的請求操作則應該屬於另乙個會話。而web應用程式是使用http協議傳輸資料的。http協議是無狀態的協議,一旦資料交換完畢,客戶端與伺服器的連線就會關閉,再次交換資料需要建立新的連線。這意味著伺服器無法從連線上跟蹤會話。即使用者a購買了一件商品放入購物車內,當再次購買時伺服器已經無法判斷該購買的行為屬於使用者a的會話還是使用者b的會話了。要跟蹤該會話,必須引入一種機制。

cookie就是這樣一種機制,可以彌補http協議的不足。在session出現之前,基本上多有的**都採用cookie來跟蹤會話。

由於http是一種無狀態的協議,伺服器單從網路連線上無法知道客戶的身份。怎麼辦呢?就給客戶端們頒發乙個通行證吧,每人乙個,無論誰訪問都必須攜帶自己的通行證。這樣伺服器就能從通行證上確認客戶身份了。這就是cookie的工作原理。

cookie實際上是一小段的文字資訊。客戶請求伺服器,如果伺服器需要記錄該使用者狀態,就使用response向客戶端頒發乙個cookie。客戶端瀏覽器會把cookie儲存起來。當瀏覽器再請求該**時,瀏覽器把請求的**連同該cookie一同提交給伺服器。伺服器檢查該cookie,以此來辨認使用者狀態。

cookie具有不可跨網域名稱性。cookie在客戶端由瀏覽器來管理,瀏覽器判斷乙個**是否能操作另乙個**cookie的依據是網域名稱。

中文與英文本元不同,中文屬於unicode字元,在記憶體中佔4個位元組,英文屬於ascii字元,記憶體中佔2個位元組。cookie中使用unicode字元時需要對unicode字元進行編碼,否則會亂碼。cookie中儲存中文只能編碼。一般使用utf-8編碼即可。

客戶端讀取cookie時,包括maxage在內的屬性都是不可讀的,也不會被提交。瀏覽器提交cookie時只會提交name與value屬性。

修改、刪除cookie時,新建的cookie除value,maxage之外的所有屬性,如name、path、domain等都要與原cookie完全一樣。

session是另一種記錄客戶狀態的機制,不同的是cookie儲存在客戶端瀏覽器中,而session儲存在伺服器上。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上。這就是session。客戶端瀏覽器再次訪問時只需要從該瀏覽器中查詢該客戶的狀態就可以了。

如果說cookie機制是通過檢查客戶身上的「通行證」來確定客戶身份的話,那麼session機制就是通過檢查伺服器上的「客戶明細表」來確認客戶身份。session相當於程式在伺服器上建立的乙份客戶檔案,客戶來訪問的時候只需要查詢客戶檔案就可以了。

每個來訪者對應乙個session物件,所有該客戶的狀態資訊都儲存在這個session物件裡。session物件是在客戶端第一次請求伺服器的時候建立的。

session的正常執行需要客戶端瀏覽器的支援。這是因為cookie作為識別標誌。http協議是無狀態的,session不能依據http連線來判斷是否為同一客戶,因此伺服器向客戶端瀏覽器傳送乙個名為jsessionid的cookie,它的值為該session的id。session依據該cookie來識別是否為同一使用者。

url位址重寫是對客戶端不支援cookie的解決方案。url位址重寫的原理是將該使用者session的id資訊重寫到url位址中。伺服器能夠解析重寫後的url獲取的session的id。

Cookie session機制詳解

cookie機制 什麼是cookie?cookie是web伺服器儲存在客戶端的一系列文字資訊。cookie的作用 對特定物件的追蹤。統計網頁瀏覽次數。簡化登入。安全效能 容易資訊洩露。cookie不是內建物件 cookie儲存的都是文字資訊 cookie是在客戶端發揮作用 cookie的語法 設定c...

Cookie Session的機制與安全

cookie和session是為了在無狀態的http協議之上維護會話狀態,使得伺服器可以知道當前是和哪個客戶在打交道。本文來詳細討論cookie和session的實現機制,以及其中涉及的安全問題。因為http協議是無狀態的,即每次使用者請求到達伺服器時,http伺服器並不知道這個使用者是誰 是否登入...

Cookie Session的機制與安全

cookie和session是為了在無狀態的http協議之上維護會話狀態,使得伺服器可以知道當前是和哪個客戶在打交道。本文來詳細討論cookie和session的實現機制,以及其中涉及的安全問題。因為http協議是無狀態的,即每次使用者請求到達伺服器時,http伺服器並不知道這個使用者是誰 是否登入...