HTTP協議Cookie和Session有什麼區別
為什麼會有COOKIE這種機制
首先一種場景, 在一個網站上面, 我發起一次請求,那伺服器怎麼知道我是誰?是誰發起的這次請求呢, HTTP協議是無狀態的協議, 瀏覽器的每一次請求,伺服器都當做一次新請求, 但是在實際應用中我們需要知道這個請求來自於誰,需要查詢哪些資訊返回給訪問者,
這個時候就引入了COOKIE機制, COOKIE機制是什麼呢? 其實就是伺服器給客戶端返回資料的時候,中間加了一個標識, 然後客戶端再次請求資料的時候,資料中帶上這個標識, 那麼伺服器接收到請求訊息時就知道這個請求來自於誰了(相當於伺服器接收到請求時,如果沒有帶識別碼,生成一個識別碼給客戶端, 如果有識別碼,就把這個識別碼需要的對應內容返回給客戶端)
cookie儲存在客戶端,比較不安全;session儲存在伺服器端,比較安全。
cookie目的可以跟蹤會話,也可以儲存使用者喜好或者儲存使用者名稱密碼,session用來跟蹤會話。
建議使用者名稱,密碼儲存在session,其它資訊可儲存在cookie。
先來了解一下各自的工作機制
cookie的工作機制
1、伺服器向客戶端響應請求的時候,會在響應頭中設定set-cookie的值,其值的格式通常是name = value的格式
2、瀏覽器將 cookie 儲存下來
3、每次請求瀏覽器都會自動將 cookie 發向伺服器
4、cookie最初是在客戶端用於儲存會話資訊的。
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都會儲存在瀏覽器,都會向伺服器請求,只是實現的工作機制不同,使用的場景不同。
相關文章
- session 和 cookie 有什麼區別?SessionCookie
- cookie和session 有什麼區別?CookieSession
- cookie是什麼?和session有什麼區別?CookieSession
- cookie和session有什麼區別?Python學習!CookieSessionPython
- Redis分散式Session和普通的cookie session有什麼區別?Redis分散式SessionCookie
- cookie和session有什麼區別?Python學習分享CookieSessionPython
- Session是什麼?它與Cookie有什麼區別?SessionCookie
- http協議/cookie詳解/session詳解HTTP協議CookieSession
- http中session和cookie的區別和關係HTTPSessionCookie
- 通訊協議和網路協議有什麼區別協議
- http協議中,“get”和“post”的區別是什麼HTTP協議
- cookie和session的區別CookieSession
- HTTP和HTTPS有什麼區別?HTTP
- VPS和HTTP有什麼區別?HTTP
- 測試面試題:cookie/session/token 分別表示什麼意思,有什麼區別?面試題CookieSession
- Cookie 和 Session 關係和區別CookieSession
- HTTP協議中URI和URL區別HTTP協議
- HTTP和HTTPS有什麼主要的區別?HTTP
- HTTP協議類POST 和GET的區別HTTP協議
- HTTP協議中PUT和POST使用區別HTTP協議
- cookie和session的區別(全面總結)CookieSession
- cookie和session的詳解與區別CookieSession
- RS485協議和Modbus協議有什麼區別?工業閘道器能用嗎?協議
- 解析HTTP協議六種請求方法,get,head,put,delete,post有什麼區別HTTP協議delete
- session與cookie的區別SessionCookie
- websocket和http有什麼不同?以及websocket協議如何實現?WebHTTP協議
- TCP和UDP協議有什麼區別?工業閘道器能用嗎?TCPUDP協議
- Token和cookie有什麼區別?網路安全工程都學什麼Cookie
- 什麼是HTTP? HTTP 和 HTTPS 的區別?HTTP
- cookie,session,sessionStorage,localStotage的區別CookieSession
- 什麼是cookie,什麼是sessionCookieSession
- websocket和http2有什麼區別?http2能取代websocket嗎?為什麼?WebHTTP
- Gossip協議和Grpc協議的區別Go協議RPC
- HTTP中Get與Post有什麼區別?HTTP
- Token ,Cookie、Session 三者區別CookieSession
- SOCKS5代理和HTTP代理有什麼區別?HTTP
- 一文搞懂Session和Cookie的用法及區別SessionCookie
- 海外HTTP代理中全域性代理和區域性代理是什麼?有什麼區別?HTTP