Cookie 是什么?
- 本质:
Cookie 是 服务器发送到浏览器 的一小段文本数据(通常小于4KB
),浏览器会保存它,并在后续请求中自动回传给服务器。 - 核心作用:
维持 HTTP 协议的无状态性(HTTP 本身不记录用户状态),实现用户身份识别、会话跟踪等功能。 - 存储位置:
浏览器本地(不同浏览器存储路径不同,如 Chrome 在Cookies
数据库文件中)。
Cookie 的工作原理
服务器设置 Cookie
通过 HTTP 响应头的Set-Cookie
字段发送给浏览器:1
2200 OK
Set-Cookie: user_id=123; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Path=/; Secure; HttpOnly浏览器存储 Cookie
浏览器按照规则存储 Cookie,后续每次请求相同域名和路径时,自动通过
Cookie
请求头回传:1
2
3GET /path
Host: example.com
Cookie: user_id=123; session=abcCookie 的关键属性
属性 作用 示例 Expires
指定 Cookie 过期时间(GMT 格式)。如果没有设置,则为会话Cookie,浏览器关闭后删除 Expires=Wed, 21 Oct 2025 07:28:00 GMT
Max-Age
存活时间(秒,优先级高于 Expires
)。不受客户端时钟影响。Max-Age=3600
(1小时)Domain
生效域名。若是 .example.com
的形式,则是对该域名的子域名也有用。Domain=example.com
Path
生效路径(限制 Cookie 的访问路径) Path=/admin
Secure
仅通过 HTTPS 传输时带有该属性。无值属性 Secure
HttpOnly
禁止 JavaScript 访问(防 XSS 攻击)。无值属性 HttpOnly
SameSite
限制跨站请求携带 Cookie(防 CSRF 攻击,可选 Strict
/Lax
/None
)SameSite=Lax
以上是 Cookie 的标准属性,使用时不区分大小写。除了标准属性,还可以在
Set-Cookie
字段中自定义 Cookie 属性,如:1
Set-Cookie: abc=123;
自定义 Cookie 属性要区分大小写,若两个属性名称相同,大小写不同,则代表不同的自定义属性。