一、这个技术是什么?
HTTP 请求默认彼此独立。用户第一次登录后,下一次请求如果没有额外信息,服务器不知道它是不是同一个用户。
Cookie、Session 和 Token 解决的是“如何在多次请求之间识别用户”的问题:
用户登录
↓
服务器确认身份
↓
浏览器保存凭证或标识
↓
后续请求带上凭证
↓
服务器识别用户
二、没有它之前发生了什么?
最早的网页请求是一次性的:
每次请求都重新判断用户
↓
用户无法保持登录状态
↓
应用尝试在 URL 中传递身份
↓
信息容易泄露且难以管理
↓
Cookie、Session 和 Token 出现
不同方案的核心差别是:身份状态保存在哪里,以及服务器如何验证它。
三、核心概念
1. Cookie
Cookie 是浏览器保存并在符合条件时自动发送给服务器的小段数据。它常用于保存 Session ID 或短期设置。
2. Session
Session 通常把用户状态保存在服务器,浏览器只保存一个 Session ID。服务器可以主动让 Session 失效。
3. Token
Token 是客户端携带的身份凭证。服务器可以通过签名、数据库或缓存验证它。
4. HttpOnly 与 Secure
HttpOnly 限制 JavaScript 读取 Cookie,Secure 要求 Cookie 通过 HTTPS 发送。它们是降低凭证泄露风险的重要属性。
5. Authentication 与 Authorization
Authentication 是“你是谁”,Authorization 是“你能做什么”。登录成功不等于拥有所有权限。
四、运行流程
五、面试复习
一句话回答
Cookie 是浏览器携带的数据,Session 通常把状态放在服务器,Token 是客户端持有的身份凭证;它们都用于解决 HTTP 无状态下的身份识别问题。
高频追问
- Cookie 和 Session 是不是同一个东西?
- JWT Token 注销为什么比较麻烦?
HttpOnly能防住什么?- 认证和授权有什么区别?
容易答错
不要说 Cookie 一定不安全,也不要说 Token 天然安全。安全性取决于传输方式、存储位置、过期时间、签名验证和权限设计。
六、项目展示
在知识库平台中,可以设计一个受保护的面试复习区:公开知识使用静态页面,个人复习进度使用登录态保存。项目展示时要说明:公开内容与私密学习数据在权限边界上分开。