Featured image of post Web开发-会话技术

Web开发-会话技术

895字

Web开发会话技术学习笔记

一、会话基础概念

1.1 什么是会话?

  • 定义:浏览器与服务器的一次连接称为会话(从第一次访问到任意一方断开连接)
  • 特点
    • 包含多次请求和响应(如:登录→查询部门→查询员工)
    • 浏览器关联性:同一浏览器多次请求属于同一会话
    • 多浏览器访问会创建多个独立会话

1.2 会话跟踪

  • 核心需求:识别多次请求是否来自同一浏览器
  • 技术本质:在HTTP无状态协议下实现数据共享
  • 典型场景:登录状态维持、购物车数据同步

二、会话跟踪三大方案对比

2.1 Cookie(客户端存储)

工作流程

  1. 服务端通过Set-Cookie响应头设置数据
  2. 浏览器自动存储Cookie
  3. 后续请求自动通过Cookie请求头携带

代码示例

1
2
3
4
5
6
7
8
// 设置Cookie
response.addCookie(new Cookie("login_user", "alice"));

// 读取Cookie
Arrays.stream(request.getCookies())
      .filter(c -> "login_user".equals(c.getName()))
      .findFirst()
      .ifPresent(c -> System.out.println(c.getValue()));

优缺点

优点

  • HTTP协议原生支持(自动处理)

缺点

  • 移动端兼容性差(Android/iOS限制)
  • 安全性风险(用户可禁用/篡改)
  • 跨域限制(协议/IP/端口任一不同即受限)

2.2 Session(服务端存储)

核心机制

  • 基于Cookie传递JSESSIONID
  • 会话数据实际存储在服务端

工作流程

  1. 首次请求创建Session对象(含唯一ID)
  2. 通过JSESSIONID Cookie返回ID
  3. 后续请求通过ID查找对应Session

代码示例

1
2
3
4
5
// 存储数据
session.setAttribute("cart", cartItems); 

// 获取数据
List<Item> items = (List<Item>)session.getAttribute("cart");

优缺点

优点

  • 数据存储在服务端,安全性较高

致命缺点

  • 集群环境失效(Session不共享)
  • 依然依赖Cookie(继承Cookie所有缺点)
  • 服务器内存压力大

2.3 令牌技术(主流方案)

核心特点

  • 无状态:服务端不存储会话数据
  • 自包含:用户信息/签名直接编码在令牌中

典型流程

image.png

优势亮点

核心优势

  • 完美支持移动端和跨域
  • 天然适应集群环境
  • 减轻服务器存储压力

❌ 实现复杂度:

  • 需自行处理令牌的生成/传递/验证
  • 需要选择安全的加密算法(如HS256/RSA)

三、企业级方案选型建议

  1. 传统Web项目:可考虑Session+Cookie(需解决集群问题)
  2. 前后端分离/移动端必须使用令牌技术
  3. 高并发场景:JWT等无状态方案是首选

🔥 重点结论:现代Web开发中,令牌技术(如JWT)已成为会话跟踪的事实标准,其优势明显覆盖了传统方案的缺陷。

如对内容有异议,请联系关邮箱2285786274@qq.com修改