Appearance
如何判断这次登录的人和之前登录的人是一个人?
HTTP 协议是无状态的,一旦请求响应完成后就会断开,那么如何保持用户的登录状态呢
cookie: 浏览器中的"通行证"
cookie 就像是我们在现实世界中用到的各种证件,它具有以下特性:
🔐 多站点凭证存储
- 可以同时保存多个网站的身份凭证
- 每个网站的凭证都是独立且安全的
🎫 自动身份验证
- 访问网站时自动出示对应的凭证
- 确保身份验证的便捷性
⏰ 智能有效期管理
- 可以设置凭证的有效期限
- 过期自动失效,保障安全
cookie 的组成
- key
- value
- domain: 表明属于哪个网站的
- path: 表明这个 cookie 是属于哪个基路径的
- secure 表明是否使用安全传输
- expire 过期时间
🔄 cookie 携带规则
cookie 在请求中的携带需要同时满足以下条件:
规则类型 | 验证内容 | 详细说明 |
---|---|---|
⏰ 时效性验证 | 有效期检查 | cookie 必须在有效期内,未过期 |
🌐 域名匹配 | 域名校验 | • cookie 的域(domain)必须与当前请求的域名相匹配 • 支持子域名匹配(例如:.baidu.com 可匹配 a.baidu.com) |
📂 路径校验 | URL 路径匹配 | • cookie 的路径(path)需要与请求的 URL 路径匹配 • 支持路径前缀匹配(例如:/blog 可匹配/blog/post) |
🔒 安全传输 | 传输协议要求 | 如果 cookie 设置了 secure 标记,则只能在 HTTPS 连接中传输 |
当一个 cookie 满足上述所有条件时,它将被自动添加到请求头中。请求头中的 cookie :
Cookie: A=a; B=b