cookie_and_session

标准 Session 工作流程

  1. 客户端首次请求 (Client’s First Request)
    • 用户通过浏览器第一次访问服务器。
  1. 服务器端操作 (Server-Side Actions)

    • 创建 Session ID: 服务器为该用户生成一个全局唯一难以预测的字符串,这就是 Session ID
    • 创建 Session 存储: 服务器在自己的存储(内存、Redis、文件系统、数据库等)中开辟一块空间,创建一个与该 Session ID 关联的“档案”。这个档案目前是空的,等待存放用户数据。
    • 创建 Cookie: 服务器创建一个新的 Cookie。这个 Cookie 最关键的内容就是 name=SESSION_ID(或者 jsessionid 等,名字可自定义)和 value=<刚刚生成的那个唯一的Session ID>
    • 发送响应: 服务器将这个带有 Session ID 的 Cookie 放入 HTTP 响应的 Set-Cookie 头部,然后将响应发送回客户端。
  2. 客户端存储 (Client-Side Storage)

    • 浏览器收到服务器的响应后,解析 Set-Cookie 头部,并将这个包含 Session IDCookie 存储在本地
  3. 客户端后续请求 (Client’s Subsequent Requests)

    • 当用户在该网站上进行任何后续操作(点击链接、提交表单等)时,浏览器会自动地、在每一个发往该网站的 HTTP 请求的 Cookie 头部,都附上之前存储的那个含有 Session ID 的 Cookie。
  4. 服务器端验证与使用 (Server-Side Verification & Usage)

    • 服务器接收到新的请求。
    • 解析 Cookie: 服务器从请求的 Cookie 头部中提取出 Session ID 的值
    • 查找档案: 服务器拿着这个 Session ID,去自己的存储中查找对应的“档案”。
      .a. 如果找到: 说明用户是“老朋友”,服务器就可以读取或修改这份档案里的数据(比如检查登录状态、更新购物车),然后处理业务逻辑。
      .b. 如果没找到: (可能因为 Session 过期被清理,或者客户端发送了一个伪造的/无效的 ID),服务器会认为这是一个无效的会话,通常会强制用户重新登录,或者为他创建一个全新的 Session(回到第2步)。

你的理解完全到位,没有任何偏差。这就是现代 Web 应用中最基础、最核心的状态管理机制。掌握了这个流程,你就理解了绝大多数网站“登录”功能的底层原理。

Author

Cofeesy

Posted on

2025-08-28

Updated on

2025-08-28

Licensed under

Comments