計算機網絡——Session、Cookie 和 Token

在 Web 開發中,SessionCookieToken 是實現用戶會話管理和身份驗證的核心技術。它們既有聯系,也有明顯區別。以下從定義、原理、聯系、區別和應用場景等方面詳細解析。

一、基本定義與原理

1. Cookie
  • 定義
    是瀏覽器存儲在客戶端的小型文本數據(鍵值對),由服務器生成并發送給瀏覽器,后續瀏覽器會自動攜帶 Cookie 訪問同一域名下的資源。
  • 原理
    • 服務器通過響應頭 Set-Cookie 發送 Cookie 到瀏覽器。
    • 瀏覽器每次請求同一域名時,會在請求頭 Cookie 中攜帶該 Cookie。
    • 可設置過期時間(Expires/Max-Age),默認隨瀏覽器關閉失效。
  • 示例
    Set-Cookie: sessionId=abc123; Expires=Mon, 22 May 2025 12:00:00 GMT; Path=/
    
2. Session
  • 定義
    是服務器端用于存儲用戶會話數據的臨時存儲機制,通過 sessionId 與客戶端 Cookie 綁定。
  • 原理
    • 用戶首次訪問時,服務器生成 sessionId 并存儲會話數據(如用戶信息),同時通過 Cookie 將 sessionId 發送給瀏覽器。
    • 后續請求中,瀏覽器攜帶 sessionId,服務器根據該 ID 查找對應的會話數據。
  • 存儲介質
    內存、文件、數據庫(如 Redis)等,需考慮服務器集群時的共享問題。
3. Token
  • 定義
    是客戶端向服務器證明身份的憑證(通常為加密字符串),由服務器生成并返回給客戶端,后續客戶端需主動攜帶 Token 訪問資源。
  • 原理
    • 登錄時,用戶提交憑證(如用戶名/密碼),服務器驗證通過后生成 Token(含用戶信息、過期時間等),返回給客戶端。
    • 客戶端存儲 Token(如 localStorage、Cookie),每次請求時在請求頭(如 Authorization: Bearer <token>)中攜帶。
    • 服務器驗證 Token 的有效性(如簽名、過期時間),無需查詢數據庫。
  • 常見類型
    • JWT(JSON Web Token):自包含數據(頭部、載荷、簽名),無需服務器存儲。
    • OAuth Token:用于第三方授權(如微信登錄)。

二、聯系與區別

聯系
  1. 均用于會話管理與身份驗證
    • Cookie 和 Session 配合使用(Cookie 存儲 sessionId,Session 存儲用戶數據)。
    • Token 可替代傳統的 Session-Cookie 模式,實現無狀態身份驗證。
  2. 數據傳遞依賴 HTTP 請求
    均通過 HTTP 請求頭或 Cookie 傳遞信息,用于識別用戶身份。
區別
維度CookieSessionToken
存儲位置客戶端(瀏覽器)服務器端(內存/數據庫等)客戶端(自定義存儲,如 localStorage)
數據性質小型文本數據(鍵值對)任意類型數據(如對象、數組)加密字符串(自包含數據或引用標識)
狀態性有狀態(依賴服務器會話存儲)有狀態(依賴服務器存儲)無狀態(JWT 自包含數據,無需服務器查詢)
安全性較低(易被篡改,需配合 HttpOnly/Secure較高(敏感數據存服務器)高(加密簽名,防篡改)
跨域支持受同源策略限制受服務器環境限制(需共享會話存儲)靈活(可通過請求頭攜帶,跨域友好)
典型應用存儲用戶偏好、購物車標識存儲用戶登錄狀態、權限信息接口認證(如 RESTful API)、單點登錄(SSO)
過期機制客戶端控制(通過 Expires/Max-Age)服務器控制(可設置超時時間)客戶端與服務器共同控制(Token 自身包含過期時間)

三、核心場景對比

1. 傳統 Web 應用(Cookie + Session)
  • 流程
    登錄 → 服務器生成 sessionId 和 Session 數據 → 通過 Cookie 返回 sessionId → 后續請求攜帶 Cookie → 服務器驗證 sessionId 并獲取用戶數據。
  • 優點
    • 服務器可控性強,適合存儲敏感信息(如用戶權限)。
    • 無需在請求中攜帶大量數據。
  • 缺點
    • 服務器需維護會話存儲,集群環境下需共享存儲(如 Redis)。
    • 跨域場景下 Cookie 傳遞受限。
2. 現代 API 應用(Token 為主)
  • 流程
    登錄 → 服務器生成 JWT → 客戶端存儲 JWT → 每次請求攜帶 JWT(如請求頭 Authorization)→ 服務器驗證 JWT 有效性。
  • 優點
    • 無狀態,服務器無需存儲會話,可橫向擴展。
    • 跨域友好,適合前后端分離、移動端、第三方服務調用。
  • 缺點
    • JWT 自身包含數據,若數據量大(如用戶權限列表),會增加請求體積。
    • 過期后需重新登錄(可通過刷新令牌(Refresh Token)優化)。

四、如何選擇?

  1. 優先使用 Cookie + Session 的場景

    • 需要存儲大量敏感數據(如用戶購物車詳情)。
    • 傳統單體應用,無需考慮跨域和分布式部署。
  2. 優先使用 Token(如 JWT)的場景

    • 前后端分離應用、API 接口認證。
    • 分布式系統或微服務架構(避免會話共享問題)。
    • 第三方授權(如 OAuth 2.0)。
  3. 混合使用場景

    • 用 Cookie 存儲 Token(配合 HttpOnly 防止 XSS 攻擊),同時利用 Token 的無狀態特性。
    • 使用 Session 存儲臨時數據(如驗證碼),Token 用于長期身份驗證。

五、安全注意事項

  1. Cookie 安全

    • 設置 HttpOnly:禁止 JavaScript 讀取 Cookie,防范 XSS 攻擊。
    • 設置 Secure:僅通過 HTTPS 傳輸 Cookie,防止中間人攻擊。
    • 避免存儲敏感數據(如密碼)。
  2. Session 安全

    • 定期更新 sessionId(如用戶重新登錄時),防止會話固定攻擊。
    • 限制 Session 存儲時間,避免會話長期有效。
  3. Token 安全

    • 使用 HTTPS 傳輸 Token,防止明文泄露。
    • 對 JWT 簽名(非對稱加密,如 RS256),防止偽造。
    • 短時效 Token + 長時效刷新令牌(Refresh Token),降低 Token 泄露風險。

總結

  • Cookie 是客戶端存儲的基礎,常與 Session 配合實現有狀態會話管理。
  • Token 是無狀態的身份憑證,適合現代分布式架構和 API 場景。
  • 選擇時需結合業務需求(如是否跨域、數據量、安全性)和技術架構(單體 vs 微服務),避免過度設計或安全漏洞。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80986.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

雙均線量化交易策略指南

策略原理 采用兩條不同周期的簡單移動平均線&#xff08;SMA&#xff09;&#xff1a; 短期均線&#xff1a;5日線&#xff08;快速反應價格變化&#xff09;長期均線&#xff1a;20日線&#xff08;反映長期趨勢&#xff09; 交易信號生成規則&#xff1a; 當 5日線 > …

視頻太大?用魔影工廠壓縮并轉MP4,畫質不打折!

在日常生活中&#xff0c;我們常常需要將視頻文件轉換成不同的格式以適應各種設備或平臺的播放需求。魔影工廠作為一款功能強大且操作簡單的視頻轉換工具&#xff0c;深受用戶喜愛。本文中簡鹿辦公將手把手教你如何使用魔影工廠將視頻轉換為MP4格式&#xff0c;并進行個性化設置…

大騰智能 PDM 系統:全生命周期管理重塑制造企業數字化轉型路徑

在當今激烈的市場競爭中&#xff0c;產品迭代速度與質量已成為企業生存與發展的核心命脈。面對客戶需求多元化、供應鏈協同復雜化、研發成本管控精細化等挑戰&#xff0c;企業亟需一套能夠貫穿產品全生命周期的數字化解決方案。 大騰智能PDM系統通過構建覆蓋設計、研發、生產、…

CodeBuddy一騰訊內部已有超過 85% 的程序員正在使用de編程工具

大家好&#xff0c;我是程序員500佰&#xff0c;目前正在前往獨立開發路線&#xff0c;我會在這里分享關于編程技術、獨立開發、技術資訊以及編程感悟等內容。 如果本文能給你提供啟發和幫助&#xff0c;還請留下你的一健三連&#xff0c;給我一些鼓勵&#xff0c;謝謝。 本文直…

解鎖 Zblog 資訊系統:502 錯誤修復與雙域名適配的實戰秘籍

在網絡世界的激烈競爭中&#xff0c;資訊類網站如同戰場上的士兵&#xff0c;每一次頁面加載、每一次內容展示都關乎著用戶的留存與轉化。而 Zblog 作為備受青睞的資訊系統&#xff0c;承載著眾多站長的流量夢想。然而&#xff0c;在網站運營過程中&#xff0c;502 錯誤頁面的突…

今日打卡,Leetcode第四題:尋找兩個正序數組的中位數,博主表示就會sorted

4. 尋找兩個正序數組的中位數 博主只會第一個暴力解法&#xff0c;然后將官網上的源碼上添加些注釋&#xff0c;嘗試理解&#xff0c;分下今日刷題記錄 題目描述 給定兩個大小分別為 m 和 n 的正序&#xff08;從小到大&#xff09;數組 nums1 和 nums2。請你找出并返回這兩個…

Jouier 普及組十連測 R3

反思 首先&#xff0c;先悔恨一下這次的比賽成績。 這次比賽的教訓就是&#xff0c;簡單的題目一定要打不要被復雜的題面震懾到&#xff0c;以及變量名不能是保留字&#xff0c;如第一題的x1,y1&#xff0c;要開long long&#xff0c;計算好數據范圍&#xff0c;如第三第四題。…

Open CASCADE學習|非線性方程組求解技術詳解

引言 在幾何建模與工程計算中&#xff0c;非線性方程組的求解是常見的核心問題。Open CASCADE&#xff08;以下簡稱OCC&#xff09;作為開源的幾何建模內核&#xff0c;提供了豐富的數學工具庫&#xff0c;其中math_FunctionSetRoot類專為求解非線性方程組設計。本文將深入探討…

科技初創企業創新推動商業未來

在這個因變革而蓬勃發展的世界里&#xff0c;科技初創企業已成為各行業創新、顛覆與轉型的驅動力。這些雄心勃勃的企業正在重塑商業格局&#xff0c;挑戰既定規范&#xff0c;并不斷突破可能性的邊界。本文將深入探索科技初創企業的精彩領域&#xff0c;探討它們如何通過創新塑…

霍尼韋爾HMR2300-D00-485數字模塊

型號&#xff1a;HMR2300-D00-485 類型&#xff1a;數字通信模塊&#xff08;RS-485接口&#xff09; 制造商&#xff1a;霍尼韋爾&#xff08;Honeywell&#xff09;&#xff0c;隸屬于其工業自動化或樓宇自動化產品線。 典型用途&#xff1a; 用于擴展主控制器&#xff08;如…

如何在 Windows 11 或 10 上更改 WIFI 或以太網 MAC 地址?

無論你使用的是哪種操作系統,更改 MAC 地址在各種場景中都有其益處。每個網卡的 MAC 地址都是唯一的,由網絡適配器在出廠時就已經分配完成;它幫助系統在物理網絡上進行通信,并為其提供身份識別。然而,如果你出于某種合法原因想要更改 Windows 上的當前 MAC 地址,那么我們…

Python語法特點與編碼規范

注釋 單行注釋 把#號當做注釋符號 多行注釋 python中并沒有規定多行注釋標記&#xff0c;通常使用單引號作為多行注釋 中文注釋 規定文件所用編碼&#xff0c;當時是為解決python2不支持中文的問題 #codingutf-8代碼縮進 python采用代碼縮進和冒號區分代碼層次&#xff0c…

跟Gemini學做PPT:字號選擇

字號的選擇對于 PPT 的可讀性和視覺效果至關重要。以下是一些通用的建議和針對你具體情況的字號選擇指南&#xff1a; 通用字號選擇原則&#xff1a; 對比度&#xff1a; 文字顏色與背景顏色形成高對比度&#xff0c;確保易讀。字體&#xff1a; 選擇清晰、專業的字體&#x…

【JVM 03-JVM內存結構之-虛擬機棧】

虛擬機棧 筆記記錄 1. 定義1.1 演示棧幀 2. 特點3. 線程運行診斷3.1 案例1 cpu占用過多&解決3.2 案例2 程序運行很長時間沒有結果 4. 拓展知識&問題辨析4.1 棧的內存越大越好嘛&#xff1f;(不是)4.2 方法內的局部變量是否線程安全&#xff1f;(是線程安全的)4.2.1 局部…

文章記單詞 | 第104篇(六級)

一&#xff0c;單詞釋義 keyboard /?ki?b??rd/ n. 鍵盤underlying /??nd?r?la???/ adj. 潛在的&#xff1b;根本的&#xff1b;基礎的June /d?u?n/ n. 六月tactics /?tkt?ks/ n. 戰術&#xff1b;策略&#xff1b;手段south /sa?θ/ n./adj./adv. 南方&#x…

中宏立達與天空衛士達成戰略合作

戰略合作篇 中宏立達-天空衛士 2025年5月23日&#xff0c;中宏立達與天空衛士在中宏立達集團總部北京麗金智地中心正式簽署戰略合作協議。中宏立達總經理王博先生與天空衛士高級副總裁兼首席運營官鞏文堅先生代表雙方簽署協議。這標志著兩家領軍企業在數字安全領域的深度合作正…

RxJS 高階映射操作符詳解:map、mergeMap 和 switchMap

1. map 操作符 map 是最基本的轉換操作符&#xff0c;用于對 Observable 發出的每個值進行一對一轉換。 基本特點&#xff1a; 同步操作一對一轉換不改變 Observable 的發出時機 詳細示例&#xff1a; import { of } from rxjs; import { map } from rxjs/operators;// 示…

基于stm32的多旋翼無人機(Multi-rotor UAV based on stm32)

由于一直在調試本項目&#xff0c;好久沒有發文章&#xff0c;最近本項目的PID調試初見成效&#xff01;開始正文前首先感謝各位粉絲的支持&#xff0c;以及對本項目技術上支持的老師以及師兄&#xff0c;謝謝你們&#xff01; 對應源碼及文件&#xff1a;源碼及文件下載 基于…

量子傳感器:開啟微觀世界的精準探測

隨著量子技術的飛速發展&#xff0c;量子傳感器逐漸成為前沿科技領域的熱門研究方向。量子傳感器利用量子力學的特性&#xff0c;能夠實現對物理量的極高精度測量&#xff0c;其應用范圍涵蓋了基礎科學研究、醫學診斷、環境監測以及國防安全等多個領域。本文將深入探討量子傳感…

河道管網排口在線監測系統解決方案

一、方案概述 我國作為世界上河流數量最為豐富的國家之一&#xff0c;擁有眾多歷史悠久的壯闊江河流域。然而&#xff0c;伴隨經濟社會的迅猛發展&#xff0c;河湖管理與保護面臨諸多新挑戰&#xff0c;諸如河道干涸、湖泊萎縮、水環境惡化以及河湖功能退化等問題&#xff0c;對…