Cookie 与 Session
文章目录
- Cookie
- Session
- 比较常用机制
Cookie
曲奇
Cookie 是浏览器 (客户端)保存 的一段小数据,每次请求都会自动带给服务端。
# 浏览器发送请求:
GET /index.html HTTP/1.1
Host: www.example.com
Cookie: session_id=abc123; user=zhangsan# 服务器响应时设置 Cookie:
Set-Cookie: session_id=abc123; Path=/; HttpOnly
- 有过期时间
- 最大容量约 4KB
Session
一节(会话)
Session 是服务器端存储的“用户会话状态”,通常配合 Cookie 使用。
如session_id(token)
比较常用机制
技术/机制 | 是否持久化 | 存储位置 | 生命周期 | 说明 |
---|---|---|---|---|
Cookie | ✅ 可持久化 | 客户端浏览器 | 可设置过期时间(如30天) | 是最典型的持久化机制 |
Session | ❌ 默认不持久化(服务重启或超时清除) | 服务端 | 默认生命周期短,通常 30 分钟 | 通过 session_id 关联客户端 |
LocalStorage | ✅ 持久化 | 浏览器本地 | 永久保存,除非手动清除 | 不参与 HTTP 请求 |
SessionStorage | ❌ 不持久化 | 浏览器本地 | 页面关闭就消失 | 和 Session 类似但在浏览器中 |
Redis 中的 Session | ✅ 可配置持久化 | 服务端(Redis) | 可以长时间保存,支持分布式 | 实现持久化登录态 |
数据库登录状态(如 JWT) | ✅ 可持久化 | 客户端 + 服务端 | 通常由服务端设置 token 过期时间 | 可做无状态认证 |