LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Web 开发必知:Cookie 与 Session 的核心机制与区别

admin
2026年2月7日 9:10 本文热度 80

介绍

Cookie 的核心机制
Cookie 是一种在用户浏览器中存储的小型文本文件,由服务器发送并保存在客户端。其核心机制在于通过 HTTP 头部传递数据,实现跨会话的用户状态管理。每个 Cookie 包含名称、值、过期时间、路径、域和安全标志等属性,服务器可通过设置这些属性控制 Cookie 的行为。Cookie 的主要用途是存储少量、不敏感的用户数据,如用户偏好或会话标识符。由于存储在客户端,Cookie 可能受跨站脚本攻击(XSS)威胁,且受浏览器存储限制(通常为 4KB/域名)。

Session 的核心机制
Session 是一种在服务器端存储用户会话数据的机制,通过为每个用户生成唯一的会话 ID 来实现。服务器将用户数据存储在内存、数据库或缓存中,并通过 Cookie 或 URL 参数传递会话 ID。当用户请求时,服务器根据会话 ID 获取并更新用户状态。Session 的核心优势在于可存储大量、敏感数据,且不受客户端存储限制。然而,Session 需要服务器维护状态,可能导致内存消耗增加,且需考虑会话超时和安全性问题,如会话固定攻击。

Cookie 与 Session 的区别
Cookie 和 Session 的主要区别在于数据存储位置和安全性。Cookie 将数据存储在客户端,易受 XSS 和窃取攻击,适合存储少量非敏感数据;Session 将数据存储在服务器端,更安全,适合存储大量敏感数据,但会占用服务器资源。此外,Cookie 适用于跨域通信,而 Session 不支持跨域。在实际应用中,常结合使用 Cookie 存储会话 ID,Session 存储用户数据,以兼顾性能和安全性。

流程

一、Cookie(客户端存储)

定义
存储在用户浏览器中的小型文本数据(最大 4KB),由服务器通过 Set-Cookie 响应头创建,浏览器后续请求会自动携带。

核心特点

  • • 存储位置:客户端浏览器
  • • 安全性:较低(明文存储,可能被篡改)
  • • 用途:跟踪会话、保存用户偏好(如语言)、实现自动登录
  • • 生命周期:可设置有效期(默认浏览器关闭失效)
  • • 优缺点
    **• 优点:**HTTP协议中支持的技术(像set-cookie响应头的解析以及 cookie 请求头数据的携带,都是浏览器自动进行的,是无需我们手动操作的)
    • 缺点:
    . 移动端APP(Android、Ios)中无法使用Cookie
    . 不安全,用户可以自己禁用cookie
    . Cookie不能跨域

image

  • • 比如第一次请求了登录接口,登录接口执行完成之后,我们就可以设置一个cookie,在cookie当中我们就可以来存储用户相关的一些数据信息。比如我可以在 cookie 当中来存储当前登录用户的用户名,用户的ID。服务器端在给客户端在响应数据的时候,会自动的将 cookie 响应给浏览器,浏览器接收到响应回来的cookie 之后,会自动的将 cookie 的值存储在浏览器本地。接下来在后续的每一次请求当中,都会将浏览器本地所存储的 cookie 自动地携带到服务端。
  • • 接下来在服务端我们就可以获取到 cookie的值。我们可以去判断一下这个 cookie的值是否存在,如果不存在这个cookie,就说明客户端之前是没有访问登录接口的;如果存在 cookie的值,就说明客户端之前已经登录完成了。这样我们就可以基于 cookie在同一次会话的不同请求之间来共享数据。
  • • 3个自动:
    1、服务器会自动的将cookie响应给浏览器。
    2、浏览器接收到响应回来的数据之后,会 自动 的将 cookie 存储在浏览器本地。
    3、在后续的请求当中,浏览器会 自动 的将 cookie 携带到服务器端。
  • • 为什么这一切都是自动化进行的?
    是因为 cookie 它是 HTP 协议当中所支持的技术,而各大浏览器厂商都支持了这一标准。在 HTTP协议官方给我们提供了一个响应头和请求头:响应头 set-Cookie :设置cookie数据的;请求头 Cookie:携带cookie数据的。

image

二、Session(服务端存储)

定义
服务器内存中存储的用户会话数据,通过 Session ID 标识(通常存放在 Cookie 中)。 

核心特点

•  **存储位置:**服务端内存/数据库  

•  **安全性:**较高(敏感信息不暴露给[客户端]

•  **用途:**存储登录状态、购物车数据等敏感信息  

•  **生命周期:**用户最后一次访问后超时(默认 30 分钟)

优缺点
• **优点:**session是存储在服务端的,安全。
• 缺点:
. 服务器集群环境下无法直接使用session
. 移动端APP(Android、Ios)中无法使用Cookie
. 用户可以自己禁用cookie
. Cookie不能跨域

session,它是服务器端会话跟踪技术,所以它是存储在服务器端的。而session 的底层其实就是基于我们刚才所介绍的 Cookie 来实现的。

image

如果我们现在要基于 session 来进行会话跟踪,浏览器在第一次请求服务器的时候,我们就可以直接在服务器当中来获取到会话对象session。如果是第一次请求session,会话对象是不存在的,这个时候服务器会自动的创建一个会话对象session 。而每一个会话对象session ,它都有一个ID(示意图中session后面括号中的1,就表示ID),我们称之为 session 的ID。

响应Cookie

image

接下来,服务器端在给浏览器响应数据的时候,它会将 session 的 ID 通过cookie 响应给浏览器。其实在响应头当中增加了一个 set-cookie 响应头。这个 Set-Cookie响应头对应的值是不是cookie? cookie 的名字是固定的 JSESSIONID 代表的服务器端会话对象Session 的 ID。浏览器会自动识别这个响应头,然后自动将cookie存储在浏览器本地。

查找session

image

接下来,在后续的每一次请求当中,都会将 cookie 的数据获取出来,并且携带到服务端。接下来服务器拿到JSESSIONID这个Cookie的值,也就是Session的ID。拿到ID之后,就会从众多的 session当中来找到当前请求对应的会话对象session。

就可以通过 session 会话对象在同一次会话的多次请求之间来共享数据了。这就是基于 session进行会话跟踪的流程。

分布式场景

需使用Redis等集中存储方案解决多服务器间的 Session 共享问题。

阅读原文:https://mp.weixin.qq.com/s/hFPNBGjsemgijbvuITvLfQ


该文章在 2026/2/7 9:13:15 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved