当前位置: 首页 > news >正文

Session、Cookie、Token 详解(原理 + 区别 + 实战)

一、为什么需要 Session / Cookie / Token?

HTTP 协议有一个非常重要的特点:

👉无状态

也就是说,每一次请求都是独立的,服务器不会记住你是谁。

例如:

登录 → 下一个请求 → 服务器不知道你是否登录过

所以就需要一种机制来:

👉记录用户身份状态


二、Cookie 详解


1. 什么是 Cookie?

Cookie 是:

👉存储在浏览器端的一小段数据

由服务器生成,并发送给客户端保存。


2. 工作流程

客户端请求 → 服务器响应 → Set-Cookie ↓ 浏览器保存 Cookie ↓ 后续请求自动携带 Cookie

3. 示例

Set-Cookie: username=admin

之后请求:

Cookie: username=admin

4. Cookie 特点

  1. 存储在客户端

  2. 自动随请求发送

  3. 有大小限制(一般 4KB)

  4. 可以设置过期时间


5. Cookie 问题

❌ 不安全(容易被窃取)
❌ 容量小
❌ 依赖浏览器


三、Session 详解


1. 什么是 Session?

Session 是:

👉存储在服务器端的用户会话数据


2. 工作流程

1. 用户登录 2. 服务器创建 Session(保存用户信息) 3. 返回 SessionID 给客户端(通过 Cookie) 4. 后续请求携带 SessionID 5. 服务器通过 SessionID 查找用户信息

3. 关键点

👉 Session ≠ Cookie

  • Session:数据(服务器)

  • Cookie:载体(客户端)


4. 示例流程

Cookie: JSESSIONID=abc123

服务器:

SessionMap: abc123 → 用户信息

5. Session 优点

✅ 数据安全(存在服务器)
✅ 可存储复杂数据


6. Session 缺点

❌ 占用服务器内存
❌ 分布式系统难以共享
❌ 扩展性差


四、Token 详解


1. 什么是 Token?

Token 是:

👉一种身份认证凭证(字符串)

常见实现:

  • JWT(JSON Web Token)


2. 工作流程

1. 用户登录 2. 服务器生成 Token 3. 返回给客户端 4. 客户端存储 Token 5. 每次请求携带 Token 6. 服务器校验 Token

3. 请求示例

Authorization: Bearer xxxxxxx

4. Token 特点

  1. 无状态(服务器不存储)

  2. 可跨域

  3. 适合分布式系统


5. Token 优点

✅ 无需服务器存储
✅ 支持分布式
✅ 扩展性强


6. Token 缺点

❌ 一旦泄露风险较大
❌ 不容易主动失效(需额外机制)


五、三者核心区别


1. 对比表

特性CookieSessionToken
存储位置客户端服务器客户端
安全性
是否无状态
分布式支持
容量
依赖浏览器

2. 一句话总结

👉 Cookie:存数据
👉 Session:存状态
👉 Token:做认证


六、三者关系(重点理解)


关系图

Cookie ← 存储 SessionID Session ← 存储用户数据 Token ← 替代 Session 的方案

经典组合

👉 Session + Cookie

Cookie 存 SessionID Session 存用户数据

👉 Token 模式

客户端存 Token 服务器只负责校验

七、实际开发中的选择


1. 单体应用(传统)

👉 使用:

Session + Cookie

2. 前后端分离

👉 使用:

Token(JWT)

原因:

  • 支持跨域

  • 前端可控

  • 更灵活


3. 分布式系统

👉 推荐:

  • Token

  • 或 Session + Redis


八、安全问题(面试重点)


1. Cookie 风险

  • XSS(跨站脚本攻击)

  • CSRF(跨站请求伪造)


2. Token 风险

  • Token 被盗用


3. 防护措施

  1. HTTPS

  2. HttpOnly Cookie

  3. Token 设置过期时间

  4. Refresh Token 机制


九、面试高频问题


1. Session 和 Cookie 的区别?

👉 Session 在服务端,Cookie 在客户端
👉 Cookie 存 SessionID


2. Token 为什么适合分布式?

👉 因为:

  • 无状态

  • 不依赖服务器存储


3. JWT 由哪几部分组成?

Header.Payload.Signature

4. 如何实现登录认证?

常见流程:

登录 → 生成 Token → 返回 → 请求携带 → 校验

十、总结(速记版)


  1. HTTP 无状态 → 需要身份认证机制

  2. Cookie:客户端存数据

  3. Session:服务端存数据

  4. Token:无状态认证

  5. 现代开发:Token 为主

http://www.cnnetsun.cn/news/1373604.html

相关文章:

  • 老王-真正的自律是被欲望点燃
  • IndexTTS 2.0作品集:多情感语音合成效果,真实案例分享
  • 开源工具实现游戏定制:UndertaleModTool全方位指南
  • OctoPrint:3D打印远程控制与管理平台全指南
  • 从DnCNN到通用图像复原:残差学习与批归一化的协同进化之路
  • 圣女司幼幽-造相Z-Turbo赋能微信小程序:AI绘画功能快速集成
  • 第五次沟通:当620篇原创换回一句“我催一下”
  • 23 Python 分类 :像老师一样一步步做判断,一文认识决策树分
  • Maxwell电场仿真 高压输电线地面电场仿真,下图分别为模型电场强度分布云图、各时刻沿地面电...
  • PostgreSQL配置文件找不到?可能是你忽略了这些隐藏的细节(附10.3-2版本解决方案)
  • C++实战:用jsoncpp处理复杂JSON数据结构的5个常见场景(附完整代码)
  • StructBERT模型处理403 Forbidden错误页面的文本分析应用
  • MATLAB2016b安装指南:从下载到激活的完整流程
  • FPGA正交调制解调:从原理到Modelsim仿真的工程实践
  • 深入解析iSLIP算法:指针滑动与迭代循环在交换机优先级匹配中的应用
  • Z-Image-GGUF多模态协同:Qwen3-4B文本编码器+Z-Image扩散模型联合调优
  • AI大模型支持下的:智慧农林遥感(99案例(空天地)多源数据预处理、高光谱AI智能精准提取、多模态模型构建、不确定性分析、WebGIS平台开发及高水平科研论文撰写)
  • 三分钟搞定!国家中小学智慧教育平台电子课本下载终极指南
  • 手把手教你用ResNet50+FCN搭建ChangeNet变化检测模型(附完整代码)
  • 《信息系统项目管理师教程(第4版)》——“干系人”(Stakeholder)
  • Unity粒子系统Texture Sheet Animation全解析:从参数配置到精灵图优化
  • OpenOCD调试适配器配置全攻略:从JTAG到SWD的实战避坑指南
  • 大模型安全避坑指南:5个容易被忽视的后门攻击风险点(含防御配置模板)
  • Angular曝出CVE‑2026‑32635漏洞:数千Web应用裸奔,前端安全防御再敲警钟
  • 无成本破局:企业办公网OpenClaw隐蔽安装排查与长效防御指南
  • Bolt.diy实战:5分钟用语音输入+GitHub同步,打造你的AI全栈工作流
  • xv6内存管理实战:Buddy Allocator优化技巧与文件动态分配详解
  • 如何高效使用QRBTF:艺术二维码生成的完整实践指南
  • 【MQTT】Mosquitto API实战:从零构建一个物联网客户端
  • YOLO26镜像应用案例:快速实现目标检测,提升开发效率