HTTP協議COOKIE和SESSION有什么區別


1、為什么會有COOKIE這種機制

  首先一種場景, 在一個網站上面, 我發起一次請求,那服務器怎么知道我是誰?是誰發起的這次請求呢,  HTTP協議是無狀態的協議, 瀏覽器的每一次請求,服務器都當做一次新請求, 但是在實際應用中我們需要知道這個請求來自於誰,需要查找哪些信息返回給訪問者,

這個時候就引入了COOKIE機制, COOKIE機制是什么呢? 其實就是服務器給客戶端返回數據的時候,中間加了一個標識, 然后客戶端再次請求數據的時候,數據中帶上這個標識, 那么服務器接收到請求消息時就知道這個請求來自於誰了(相當於服務器接收到請求時,如果沒有帶識別碼,生成一個識別碼給客戶端, 如果有識別碼,就把這個識別碼需要的對應內容返回給客戶端)

cookie保存在客戶端,比較不安全;session保存在服務器端,比較安全。

cookie目的可以跟蹤會話,也可以保存用戶喜好或者保存用戶名密碼,session用來跟蹤會話。

建議用戶名,密碼保存在session,其它信息可保存在cookie。

先來了解一下各自的工作機制

1. cookie的工作機制

1、服務器向客戶端響應請求的時候,會在響應頭中設置set-cookie的值,其值的格式通常是name = value的格式

2、瀏覽器將 cookie 保存下來

3、每次請求瀏覽器都會自動將 cookie 發向服務器

4、cookie最初是在客戶端用於存儲會話信息的。

 
 

2. session的工作機制?

1、當客戶端第一次請求session對象時,服務器會創建一個session,並通過特殊算法算出一個session的ID,用來標識該session對象,然后將這個session序列放置到set-cookie中發送給瀏覽器

2、瀏覽器下次發請求的時候,這個sessionID會被放置在請求頭中,和cookie一起發送回來

3、服務器再通過內存中保存的sessionID跟cookie中保存的sessionID進行比較,並根據ID在內存中找到之前創建的session對象,提供給請求使用,也就是服務器會通過session保存一個狀態記錄,瀏覽器會通過cookie保存狀態記錄,服務器通過兩者的對比實現跟蹤狀態,這樣的做,也極大的避免了cookie被篡改而帶來的安全性問題

4、由於cookie可以被人為的禁止,必須有其他機制以便在cookie被禁止時仍然能夠把session id傳遞回服務器。經常被使用的一種技術叫做URL重寫,就是把session id直接附加在URL路徑的后面,附加方式也有兩種,一種是作為URL路徑的附加信息,另一種是作為查詢字符串附加在URL后面

 
 

總之,cookie、session都會保存在瀏覽器,都會向服務器請求,只是實現的工作機制不同,使用的場景不同。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM