news 2026/4/18 8:25:30

Cookie 与 Session 的工作流程--含可视化流程图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cookie 与 Session 的工作流程--含可视化流程图

目录

一、如果没有 Cookie 和 Session,世界会怎样?

1️⃣ 首先你要知道:HTTP 是“失忆”的

2️⃣ 如果真的一直这样,会发生什么?

二、Cookie:贴在你身上的“便利贴”

1️⃣ Cookie 是什么?

2️⃣ Cookie 的工作流程(完整可视化过程)

🔍 第一次访问时(你还没任何身份标识)

🔁 再次访问时(浏览器会自动带着 Cookie)

3️⃣ Cookie 的优点与缺陷

三、Session:服务器的小本子

1️⃣ Session 到底是什么?

2️⃣ Session 为什么离不开 Cookie?

四、Session 的完整工作原理(核心!!)

🔐 登录瞬间,到底发生了什么?

🔁 后续每一次请求(身份验证过程)

五、Cookie + Session 的黄金搭档关系

六、常见关键细节(很多人都会踩坑的点)

🔸 Cookie 里不会存真正的用户信息

🔸 Session 不是一定存在内存

🔸 Cookie 可能被禁用

七、10 年大厂高频真题(含生活化答案)

✅ 题目 1:为什么 Cookie 不能存敏感信息?

✅ 题目 2:Session 一定依赖 Cookie 吗?

✅ 题目 3:分布式系统 Session 怎么办?

✅ 题目 4:Session vs JWT 最大区别?

✅ 题目 5:Cookie 被禁用怎么办?

八、最近10年大厂常考题目及答案

考题 1:Cookie 和 Session 的区别与联系是什么?(阿里 2021、字节 2023)

考题 2:Cookie 有哪些安全属性?分别解决什么问题?(腾讯 2022、美团 2024)

考题 3:分布式系统中,Session 如何实现共享?有哪些方案?(阿里 2023、字节 2025)

考题 4:如果浏览器禁用了 Cookie,Session 还能使用吗?如何实现?(美团 2021、京东 2023)

考题 5:a.baidu.com和b.baidu.com如何共享 Cookie?(字节 2020、阿里 2025)


一、如果没有 Cookie 和 Session,世界会怎样?

1️⃣ 首先你要知道:HTTP 是“失忆”的

HTTP 协议有一个非常硬核的特性:

👉无状态(Stateless)——服务器不会记住你是谁

用生活比喻:

你走进便利店买水 → 出门 → 5 秒后再进来 → 店员依然当你是陌生人。

这就是 HTTP。


2️⃣ 如果真的一直这样,会发生什么?

  • 购物车永远记不了东西

  • 登录每刷新一次页面就得重新输密码

  • 银行网站根本无法工作

所以,我们必须给“失忆的服务器”加点记忆能力。

👉于是 Cookie 和 Session 应运而生。


二、Cookie:贴在你身上的“便利贴”

1️⃣ Cookie 是什么?

专业定义

Cookie 是服务器发送到浏览器并由浏览器保存的一小段数据,每次请求会自动带回给服务器。

人话版本

服务器给你贴了张便利贴,说:
“以后再来,把这张带上,我就知道是你了。”


2️⃣ Cookie 的工作流程(完整可视化过程)

🔍 第一次访问时(你还没任何身份标识)


🔁 再次访问时(浏览器会自动带着 Cookie)


3️⃣ Cookie 的优点与缺陷

优点

  • 浏览器自动携带

  • 机制简单

  • 非常适合存少量身份标识

致命缺点

❌ Cookie 在客户端,用户能看到、能删、甚至能改

这意味着:

  • 不安全

  • 不能直接存敏感信息

👉 于是Session 登场了。


三、Session:服务器的小本子

1️⃣ Session 到底是什么?

专业定义

Session 是服务器为每个用户维护的一份“会话状态数据”。

生活比喻

服务器有一本小本子,记着:
“这个用户是谁,登录了吗,有什么权限,正在干什么。”


2️⃣ Session 为什么离不开 Cookie?

很多人误解:

“用 Session 就不需要 Cookie 了吧?”

错!真正真相是:

👉Session 不把数据放 Cookie,只把“钥匙(SessionID)放 Cookie”。


四、Session 的完整工作原理(核心!!)

🔐 登录瞬间,到底发生了什么?


🔁 后续每一次请求(身份验证过程)


五、Cookie + Session 的黄金搭档关系

一句专业总结:

Cookie 负责“编号”,Session 负责“内容”。

一句生活总结:

  • Cookie 像:寄存柜的取件牌

  • Session 像:柜台后面的真实包裹

📌 取件牌丢了 → 还可以人工找,但麻烦
📌 包裹没了 → 你拿号码也没用


六、常见关键细节(很多人都会踩坑的点)

🔸 Cookie 里不会存真正的用户信息

只存:SessionID / Token / Key

🔸 Session 不是一定存在内存

  • 小系统:内存

  • 大厂:Redis / Session 集群 / 共享 Session

🔸 Cookie 可能被禁用

此时:

  • URL 重写

  • Header 自定义

  • JWT 替代


七、10 年大厂高频真题(含生活化答案)


✅ 题目 1:为什么 Cookie 不能存敏感信息?

专业回答:
Cookie 在客户端,可被查看、篡改,并且存在 XSS 攻击威胁。

生活比喻:
就像把银行卡密码写在钱包外壳上。


✅ 题目 2:Session 一定依赖 Cookie 吗?

专业回答:
不是必须,可以通过 URL 重写、Header,但 Cookie 是最主流方式。

生活比喻:
你可以刷卡进门,也可以人工登记。


✅ 题目 3:分布式系统 Session 怎么办?

专业回答:
Session 共享(Redis)、Session 同步、或干脆改用 JWT 无状态方案。

生活比喻:
连锁超市共享会员系统,而不是每家店各一本。


✅ 题目 4:Session vs JWT 最大区别?

专业回答:
Session 有状态(服务器保存),JWT 无状态(信息自包含在 Token 里)。

生活比喻:
Session = 商家账本
JWT = 印着你信息的身份证


✅ 题目 5:Cookie 被禁用怎么办?

专业回答:
Session 机制失效,需要 URL 传递、Header、或改 Token 架构。

生活比喻:
进出小区不能刷卡 → 每次都人工登记。


八、最近10年大厂常考题目及答案

以下是阿里、腾讯、字节、美团等大厂近10年高频面试题

考题 1:Cookie 和 Session 的区别与联系是什么?(阿里 2021、字节 2023)

专业答案

区别:

① 存储位置:Cookie 在客户端(浏览器),Session 在服务器端;

② 安全性:Cookie 易被篡改 / 窃取(需通过 HttpOnly/Secure 等属性增强安全),Session 数据在服务器,安全性更高;

③ 存储容量:Cookie 通常≤4KB / 域名,Session 无固定限制(取决于服务器存储);

④ 过期策略:Cookie 可通过 Expires/Max-Age 自定义过期(默认随浏览器关闭),Session 依赖服务器配置(如超时自动失效);

⑤ 交互方式:Cookie 每次请求自动携带,Session 通过 Session ID 关联(通常存于 Cookie)。

联系:

① Session 依赖 Cookie 传递 Session ID,二者协同实现 HTTP 状态跟踪;② Cookie 可独立使用(如存储用户偏好),Session 不可独立使用(需依赖 Session ID 传递)。

通俗解释

区别:① 存放位置:Cookie 是你手里的会员卡(客户端),Session 是店里的会员档案(服务器);

② 安全性:会员卡容易丢 / 被改(Cookie),档案锁在柜子里(Session)更安全;

③ 容量:会员卡只能写少量信息(4KB),档案本可以写很多内容;

④ 过期:会员卡可以设置有效期(Cookie),档案超过 30 分钟没人用就自动作废(Session);⑤ 使用方式:你每次去都要带会员卡(Cookie 自动携带),档案要通过会员卡编号查找(Session 依赖 Session ID)。

联系:

① 没有会员卡(Cookie),店员找不到你的档案(Session);

② 会员卡可以单独用(比如存积分),但档案不能单独用(必须要编号)。

考题 2:Cookie 有哪些安全属性?分别解决什么问题?(腾讯 2022、美团 2024)

专业答案

Cookie 的核心安全属性及作用:

① HttpOnly:禁止客户端 JavaScript 读取 Cookie,解决 XSS 攻击窃取敏感 Cookie(如 Session ID)的问题;

② Secure:仅在 HTTPS 协议下发送 Cookie,解决 HTTP 连接中 Cookie 被中间人窃听的问题;③ SameSite:控制跨站请求是否发送 Cookie,取值 Strict(跨站不发送)、Lax(仅顶层导航发送)、None(允许发送,需配合 Secure),解决 CSRF 攻击问题;

④ Domain/Path:限制 Cookie 的生效域名和路径,避免 Cookie 被无关路径或子域滥用,缩小安全风险范围。

通俗解释

Cookie 的安全属性就像给会员卡加了各种安全限制:

① HttpOnly:会员卡标注 “员工专用,顾客不能看详情”,防止别人(XSS 攻击)偷看到卡上的编号;

② Secure:会员卡标注 “仅店内使用,禁止带出店外”,防止在外面(HTTP 连接)被别人抢走;③ SameSite:会员卡标注 “仅限本人使用,禁止转借”,防止别人(CSRF 攻击)用你的卡冒名消费;

④ Domain/Path:会员卡标注 “仅本连锁门店生鲜区使用”,避免别的店(子域)或别的区域(路径)滥用你的卡。

考题 3:分布式系统中,Session 如何实现共享?有哪些方案?(阿里 2023、字节 2025)

专业答案

分布式系统中 Session 共享的核心问题:用户请求可能被负载均衡分发到不同服务器,单机存储的 Session 无法跨节点共享,导致用户 “明明登录了却被要求重新登录”。

常见方案:

① Session 复制:集群中每个服务器将本地 Session 复制到其他节点,优点是实现简单、用户无感知,缺点是节点增多后复制开销指数级增长,不适合大规模集群;

② Session 绑定(Sticky Session):通过负载均衡将用户固定到同一服务器,优点是实现成本低、性能好,缺点是扩展性差,节点宕机导致 Session 丢失;

③ 集中式存储:将 Session 存储在独立的共享组件(如 Redis、Memcached),所有服务器通过 Session ID 从集中存储中获取 Session 数据,优点是扩展性好、支持高并发,缺点是增加外部依赖,需保证存储层高可用,是目前主流方案;

④ Token 方式(无状态 Session):用 JWT 等 Token 替代 Session,服务器不存储 Session 数据,Token 包含用户信息并签名,客户端每次请求携带 Token,优点是服务端无状态、天然支持水平扩展,缺点是 Token 一旦签发无法轻易撤销,刷新机制较复杂。

通俗解释:分布式系统就像连锁便利店,每个门店(服务器)都有自己的档案柜(单机 Session),顾客(用户)可能去不同门店,导致档案无法共享。

解决方案:

① Session 复制:每个门店把顾客档案复印一份发给其他门店,优点是不用额外设备,缺点是门店多了复印太费时间;

② Session 绑定:让顾客每次都去同一个门店,优点是简单、快,缺点是这个门店关门了(服务器宕机),顾客的档案就没了;

③ 集中式存储:所有门店共用一个中央档案库(Redis),不管顾客去哪个门店,都去中央档案库查档案,优点是门店可以随便加、档案不会丢,缺点是需要单独维护中央档案库;

④ Token 方式:不用档案库,给顾客发一个带签名的凭证(Token),凭证上写着顾客信息,每个门店只要验证凭证的签名就知道顾客身份,优点是不用维护档案库、门店可以无限加,缺点是凭证发出去后不能随便收回,需要定期换。

考题 4:如果浏览器禁用了 Cookie,Session 还能使用吗?如何实现?(美团 2021、京东 2023)

专业答案:浏览器禁用 Cookie 后,Session 仍可使用,核心是通过其他方式传递 Session ID。

常见实现方式:

① URL 重写:将 Session ID 拼接在 URL 末尾,格式为 “URL;jsessionid=xxx”,服务器接收请求时从 URL 中解析 Session ID;

② 表单隐藏字段:在表单中添加隐藏字段<input type="hidden" name="jsessionid" value="xxx">,提交表单时将 Session ID 传递给服务器;

③ 自定义请求头:通过 AJAX 请求的自定义头(如 X-Session-ID: xxx)传递 Session ID。

注意事项:

① URL 重写需对所有 URL 编码,且静态页面无法使用;

② 表单隐藏字段仅适用于表单提交场景;

③ 自定义请求头需前端配合,适用范围有限;

④ 这些方式安全性和用户体验均不如 Cookie,现在很少使用,更推荐用 Token 认证替代。

通俗解释:浏览器禁用 Cookie 就像顾客丢了会员卡(不能存储 Session ID),但还是可以通过其他方式证明身份:

① URL 重写:店员把顾客的档案编号写在购物袋上(URL 末尾),顾客下次来的时候带着购物袋,店员从购物袋上找编号;

② 表单隐藏字段:店员把档案编号写在一张纸条上,放在顾客的购物车里(表单隐藏字段),顾客结账时把纸条一起交给店员;

③ 自定义请求头:顾客每次来的时候主动告诉店员自己的档案编号(自定义请求头)。

这些方式的缺点:

① 购物袋上的编号容易被别人看到(URL 重写不安全);

② 纸条只能在结账时用(表单场景有限);

③ 主动说编号太麻烦(自定义请求头);

④ 所以现在更推荐用电子凭证(Token)替代。

考题 5:a.baidu.com和b.baidu.com如何共享 Cookie?(字节 2020、阿里 2025)

专业答案:实现同主域下不同子域共享 Cookie 的核心是设置 Cookie 的 Domain 属性。

具体步骤:

① 服务器在 Set-Cookie 响应头中设置 Domain=.baidu.com(注意前面的点),表示该 Cookie 适用于baidu.com及其所有子域(a.baidu.com、b.baidu.com等);

② 确保 Cookie 的 Path 属性设置为 /(表示整个域名下所有路径生效);

③ 子域a.baidu.com和b.baidu.com的请求都会自动携带该 Cookie,从而实现共享。

注意事项:

① Domain 属性不能设置为跨主域(如将baidu.com的 Cookie 设置为 Domain=.google.com是无效的),受同源策略限制;

② 共享的 Cookie 建议设置 HttpOnly、Secure 等安全属性,避免被滥用。

通俗解释:a.baidu.com和b.baidu.com就像百度连锁的两家门店(子域),要让顾客的会员卡(Cookie)在两家店通用:

① 店员在发卡时标注 “全百度连锁门店通用”(Domain=.baidu.com),而不是 “仅限 a 店使用”(默认 Domain=a.baidu.com);

② 同时标注 “全门店所有区域可用”(Path=/);

③ 这样顾客拿着这张卡去 b 店,店员也能识别,实现会员卡共享。

注意:

① 不能把百度的会员卡标注 “谷歌门店通用”(跨主域无效),只能在同一连锁品牌(同主域)内共享;

② 共享的会员卡也要加安全限制(HttpOnly/Secure),避免被滥用。

总结

  1. Cookie 与 Session 核心差异在于存储位置和状态性,Session 依赖 Cookie 传递 ID,二者协同实现 HTTP 状态跟踪;
  2. Cookie 的安全属性(HttpOnly/Secure/SameSite 等)是抵御 XSS/CSRF 等攻击的关键,Domain/Path 可控制 Cookie 生效范围;
  3. 分布式 Session 共享的主流方案是集中式存储(Redis),禁用 Cookie 时可通过 URL 重写等方式传递 Session ID,但更推荐 Token(JWT)方案;
  4. 同主域子域共享 Cookie 的核心是设置 Domain=. 主域名,且需遵循同源策略,同时搭配安全属性保障安全。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 9:19:43

Cherry Studio:300+ AI助手快速上手指南 [特殊字符]

Cherry Studio&#xff1a;300 AI助手快速上手指南 &#x1f680; 【免费下载链接】cherry-studio &#x1f352; Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端 项目地址: https://gitcode.com/CherryHQ/cherry-studio 想要一款功能强大且简单易用的AI桌面应用…

作者头像 李华
网站建设 2026/4/18 9:19:01

从零开始:用Llama Factory和预配置镜像快速搭建你的第一个大模型

从零开始&#xff1a;用Llama Factory和预配置镜像快速搭建你的第一个大模型 作为一名刚接触大模型微调的大学生&#xff0c;你是否曾被复杂的CUDA环境配置和依赖安装劝退&#xff1f;本文将带你使用预配置的Llama Factory镜像&#xff0c;无需操心环境搭建&#xff0c;快速上手…

作者头像 李华
网站建设 2026/4/18 9:45:11

阿里通义Z-Image-Turbo WebUI模型微调:快速搭建训练环境的秘诀

阿里通义Z-Image-Turbo WebUI模型微调&#xff1a;快速搭建训练环境的秘诀 如果你是一名数据科学家或AI开发者&#xff0c;想要对阿里通义Z-Image-Turbo WebUI进行微调以适应特定任务&#xff0c;但被复杂的训练环境配置所困扰&#xff0c;这篇文章正是为你准备的。本文将详细介…

作者头像 李华
网站建设 2026/4/18 11:20:07

CRNN OCR在学术论文识别与检索中的应用

CRNN OCR在学术论文识别与检索中的应用 &#x1f4d6; 技术背景&#xff1a;OCR文字识别的演进与挑战 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;是计算机视觉领域的重要分支&#xff0c;其核心目标是从图像中自动提取可编辑、可搜索的文本信息。…

作者头像 李华
网站建设 2026/4/18 11:56:28

KSWAPD0调优:让老旧服务器性能提升300%的秘诀

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个自动化KSWAPD0参数优化工具&#xff0c;要求&#xff1a;1.自动检测系统硬件配置 2.基于规则引擎推荐优化参数 3.支持批量修改内核参数 4.提供回滚功能 5.生成优化前后性能…

作者头像 李华