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=. 主域名,且需遵循同源策略,同时搭配安全属性保障安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1134066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tunnelto终极指南:5分钟让本地服务全球可访问

tunnelto终极指南&#xff1a;5分钟让本地服务全球可访问 【免费下载链接】tunnelto Expose your local web server to the internet with a public URL. 项目地址: https://gitcode.com/GitHub_Trending/tu/tunnelto 在远程协作和敏捷开发的时代&#xff0c;tunnelto作…

PythonWin7:让Windows 7系统支持最新Python版本的完整指南

PythonWin7&#xff1a;让Windows 7系统支持最新Python版本的完整指南 【免费下载链接】PythonWin7 Python 3.9 installers that support Windows 7 SP1 and Windows Server 2008 R2 项目地址: https://gitcode.com/gh_mirrors/py/PythonWin7 项目简介 PythonWin7是一个…

RNN架构再发力:CRNN在文字识别领域的复兴之路

RNN架构再发力&#xff1a;CRNN在文字识别领域的复兴之路 &#x1f4d6; 项目简介&#xff1a;高精度通用 OCR 文字识别服务&#xff08;CRNN版&#xff09; 光学字符识别&#xff08;OCR&#xff09;作为连接物理世界与数字信息的关键技术&#xff0c;已广泛应用于文档数字化、…

3步搞定Adobe软件下载:macOS用户必备的免登录神器

3步搞定Adobe软件下载&#xff1a;macOS用户必备的免登录神器 【免费下载链接】Adobe-Downloader macOS Adobe apps download & installer 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-Downloader 还在为Adobe官网繁琐的登录流程而头疼吗&#xff1f;Adobe …

GitHub Token终极配置教程:PakePlus云打包权限安全设置快速上手

GitHub Token终极配置教程&#xff1a;PakePlus云打包权限安全设置快速上手 【免费下载链接】PakePlus Turn any webpage into a desktop app and mobile app with Rust. 利用 Rust 轻松构建轻量级(仅5M)多端桌面应用和多端手机应用 项目地址: https://gitcode.com/GitHub_Tr…

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

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

零基础教程:5分钟搞定DEVECOSTUDIO中文设置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个极简的向导式应用&#xff0c;引导用户完成DEVECOSTUDIO中文设置。应用需要&#xff1a;1) 极简UI设计 2) 语音指导功能 3) 自动错误检测 4) 一键完成配置。使用Flutter开…

IDEA命令行优化:从10分钟到10秒的蜕变

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个性能对比工具&#xff0c;展示不同解决方案处理IDEA命令行过长问题的效率&#xff1a;1.传统手动修改方式 2.脚本自动化方案 3.AI优化方案。要求&#xff1a;1.内置测试用…

企业级域名解析最佳实践:从配置到灾备

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个企业级域名解析模拟系统&#xff0c;展示如何通过DNS实现&#xff1a;1) 基于地理位置的智能解析 2) 主备服务器故障自动切换 3) CDN节点优选。要求包含可视化流量分布图和…

PPOCRLABEL入门指南:零基础到熟练标注

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个PPOCRLABEL新手教学应用&#xff0c;包含&#xff1a;1. 分步安装指南&#xff1b;2. 基础标注操作演示&#xff1b;3. 常见问题解答&#xff1b;4. 交互式练习项目&#…

CRNN OCR在教育行业的智能阅卷应用

CRNN OCR在教育行业的智能阅卷应用 &#x1f4d6; 技术背景&#xff1a;OCR文字识别的演进与挑战 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;作为连接物理世界与数字信息的关键技术&#xff0c;已广泛应用于文档数字化、票据处理、身份验证等多…

Markdown笔记自动化:OCR镜像批量提取图片文字

Markdown笔记自动化&#xff1a;OCR镜像批量提取图片文字 &#x1f4d6; 项目简介 在日常学习与工作中&#xff0c;我们经常需要从截图、扫描件或照片中提取文字内容并整理成Markdown笔记。传统手动输入效率低下且容易出错&#xff0c;而通用OCR工具往往对中文支持不佳&#xf…

零基础玩转DDNS-GO:小白也能懂的动态域名解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个DDNS-GO新手教学项目&#xff0c;包含&#xff1a;1) 动态域名解析的动画演示&#xff1b;2) 分步骤的配置向导&#xff1b;3) 常见错误可视化排查工具&#xff1b;4) 互动…

我的iPhone个性化改造日记:从千篇一律到独一无二

我的iPhone个性化改造日记&#xff1a;从千篇一律到独一无二 【免费下载链接】Cowabunga iOS 14.0-15.7.1 & 16.0-16.1.2 MacDirtyCow ToolBox 项目地址: https://gitcode.com/gh_mirrors/co/Cowabunga 还记得去年拿到新iPhone时的兴奋&#xff0c;但没过多久就发现…

企业级自动化平台快速部署与实战指南:告别命令行烦恼的终极方案

企业级自动化平台快速部署与实战指南&#xff1a;告别命令行烦恼的终极方案 【免费下载链接】semaphore Modern UI for Ansible, Terraform, OpenTofu, Bash, Pulumi 项目地址: https://gitcode.com/gh_mirrors/sem/semaphore 还在为复杂的Ansible命令、Terraform状态管…

Adobe Downloader深度解析:5大核心功能助你轻松获取Adobe全家桶

Adobe Downloader深度解析&#xff1a;5大核心功能助你轻松获取Adobe全家桶 【免费下载链接】Adobe-Downloader macOS Adobe apps download & installer 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-Downloader 还在为Adobe官方下载的繁琐流程而头疼吗&…

TeslaMate位置管理终极指南:从零开始掌握智能地理围栏技术

TeslaMate位置管理终极指南&#xff1a;从零开始掌握智能地理围栏技术 【免费下载链接】teslamate teslamate-org/teslamate: TeslaMate 是一个开源项目&#xff0c;用于收集特斯拉电动汽车的实时数据&#xff0c;并存储在数据库中以便进一步分析和可视化。该项目支持监控车辆状…

3分钟快速上手:WuWa-Mod终极配置指南

3分钟快速上手&#xff1a;WuWa-Mod终极配置指南 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为《鸣潮》游戏中繁琐的操作和限制而烦恼吗&#xff1f;WuWa-Mod模组为你带来革命性的游戏增强体验…

终极智能黑苹果EFI工具:OpCore Simplify革命性配置方案

终极智能黑苹果EFI工具&#xff1a;OpCore Simplify革命性配置方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在被复杂的OpenCore配置折磨得焦…

全自动水文在线监测系统

“跟着小途选&#xff0c;装备不迷途”水文测报是防汛抗旱、水资源合理调度、水生态保护的核心基础&#xff0c;而雨量与水位作为水文监测的关键参数&#xff0c;其监测的精准性、实时性直接影响决策的科学性。传统水文监测多采用雨量站与水位站分开部署的模式&#xff0c;存在…