news 2026/1/29 13:55:03

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/1/28 15:07:56

10分钟玩转Z-Image-Turbo:无需本地配置的云端AI绘画神器

10分钟玩转Z-Image-Turbo&#xff1a;无需本地配置的云端AI绘画神器 作为一名数字艺术爱好者&#xff0c;你是否曾被Z-Image-Turbo的8步快速生成能力所吸引&#xff0c;却又被复杂的本地部署教程和CUDA配置劝退&#xff1f;别担心&#xff0c;本文将带你通过云端环境快速体验这…

作者头像 李华
网站建设 2026/1/27 17:57:24

阿里通义Z-Image-Turbo WebUI商业应用:快速搭建产品原型的设计利器

阿里通义Z-Image-Turbo WebUI商业应用&#xff1a;快速搭建产品原型的设计利器 对于产品设计团队来说&#xff0c;快速生成多种设计方案原型是提升工作效率的关键。传统设计流程往往需要耗费大量时间在草图绘制、效果图制作和方案迭代上。阿里通义Z-Image-Turbo WebUI正是为解决…

作者头像 李华
网站建设 2026/1/28 20:02:15

5分钟搞定Llama Factory微调:云端GPU的懒人福音

5分钟搞定Llama Factory微调&#xff1a;云端GPU的懒人福音 作为一名开发者&#xff0c;你是否遇到过这样的困境&#xff1a;脑海中闪过一个模型微调的绝妙想法&#xff0c;却被繁琐的环境配置和显存问题绊住了脚步&#xff1f;今天我要分享的正是如何用5分钟快速验证Llama Fac…

作者头像 李华
网站建设 2026/1/28 10:23:04

AI+设计:用阿里通义Z-Image-Turbo革新你的设计工作流

AI设计&#xff1a;用阿里通义Z-Image-Turbo革新你的设计工作流 作为一名平面设计师&#xff0c;你是否经常遇到创意枯竭、素材匮乏的困境&#xff1f;或者在使用传统设计软件时&#xff0c;希望快速生成符合需求的AI图像却苦于工具集成度低&#xff1f;本文将介绍如何通过阿里…

作者头像 李华
网站建设 2026/1/29 12:30:37

AI绘画创业:快速搭建基于Z-Image-Turbo的SaaS服务原型

AI绘画创业&#xff1a;快速搭建基于Z-Image-Turbo的SaaS服务原型 如果你是一名想要快速验证AI绘画SaaS商业模型的创业者&#xff0c;那么Z-Image-Turbo可能是你的理想选择。这款由阿里通义实验室开源的图像生成模型&#xff0c;仅需8步推理即可实现亚秒级图像生成&#xff0c;…

作者头像 李华
网站建设 2026/1/26 3:53:11

用OpenProject快速构建项目管理原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速构建一个项目管理原型&#xff0c;使用OpenProject实现以下功能&#xff1a;1. 创建一个模拟项目&#xff0c;包含5-10个任务&#xff1b;2. 设置基本的工作流和权限&#xff…

作者头像 李华