Cookie☆

  • 本质
    Cookie 是 ​​服务器发送到浏览器​​ 的一小段文本数据(通常小于 4KB),浏览器会保存它,并在后续请求中自动回传给服务器。
  • 核心作用
    ​维持 HTTP 协议的无状态性​​(HTTP 本身不记录用户状态),实现用户身份识别、会话跟踪等功能。
  • 存储位置
    浏览器本地(不同浏览器存储路径不同,如 Chrome 在 Cookies 数据库文件中)。
  • 服务器设置 Cookie
    通过 HTTP 响应头的 Set-Cookie 字段发送给浏览器:

    1
    2
    HTTP/1.1 200 OK
    Set-Cookie: user_id=123; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Path=/; Secure; HttpOnly
  • 浏览器存储 Cookie

    浏览器按照规则存储 Cookie,后续每次请求相同域名和路径时,自动通过 Cookie 请求头回传:

    1
    2
    3
    GET /path HTTP/1.1
    Host: example.com
    Cookie: user_id=123; session=abc
  • Cookie 的关键属性

    属性 作用 示例
    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 属性要区分大小写,若两个属性名称相同,大小写不同,则代表不同的自定义属性。