cookie常见字段

0 阅读3分钟

一、Cookie核心字段(必知必会)

1. Name(名称)

  • 作用:标识Cookie的唯一名称,与Value成对存储数据。
  • 示例session_idusername
  • 注意:名称不可包含空格、分号等特殊字符,区分大小写。

2. Value(值)

  • 作用:存储具体数据,如用户标识、偏好设置。
  • 示例Value=123abcValue=theme=dark
  • 限制:单个Cookie大小通常不超过4KB,值需编码(如URL编码)避免特殊字符解析错误。

3. Domain(域名)

  • 作用:指定Cookie可被哪些域名访问(跨域限制)。
  • 示例
    • 设为example.com,则sub.example.com也可访问;
    • 设为sub.example.com,仅该子域名可访问。
  • 安全场景:禁止将主域名Cookie暴露给第三方子域名(如Domain=.example.com需谨慎使用)。

4. Path(路径)

  • 作用:指定Cookie可被哪些路径访问(细化域名下的路径权限)。
  • 示例
    • Path=/:根路径下所有页面均可访问;
    • Path=/api:仅example.com/api及子路径可访问。
  • 应用:后端接口专用Cookie可限定Path=/api,减少前端页面误用。

5. Expires(过期时间)

  • 作用:指定Cookie的失效时间(绝对时间戳)。
  • 示例Expires=Thu, 01 Jan 2025 00:00:00 GMT
  • 对比:若不设置ExpiresMax-Age,则为会话级Cookie(浏览器关闭后失效)。

6. Max-Age(最大存活时间)

  • 作用:指定Cookie从创建到失效的秒数(相对时间)。
  • 示例Max-Age=86400(24小时后失效)。
  • 优先级Max-Age优先级高于Expires,且更易计算(推荐使用)。

二、Cookie安全相关字段(面试加分项)

1. Secure(安全标志)

  • 作用:标记Cookie仅在HTTPS协议下发送,禁止HTTP传输。
  • 场景:支付场景Cookie必须设置Secure,防止中间人攻击。

2. HttpOnly(HTTP专用)

  • 作用:禁止JavaScript通过document.cookie访问Cookie,防止XSS攻击窃取数据。
  • 示例:后端设置响应头Set-Cookie: session_id=123; HttpOnly
  • 注意:仅能通过HTTP请求发送(如Ajax、表单提交),无法被前端JS读取。

3. SameSite(同站策略)

  • 作用:控制Cookie是否在跨站请求中发送,防范CSRF攻击。
    • Strict:完全禁止跨站发送(最严格,兼容性差);
    • Lax:允许部分跨站场景(如GET请求从a.com跳转到b.com);
    • None:允许跨站发送(需搭配Secure使用)。
  • 示例:电商网站设置SameSite=Lax,避免用户在钓鱼网站被强制提交订单。

三、字段组合应用场景(结合业务说明)

1. 持久化登录状态

Set-Cookie: token=abc123; 
Domain=example.com; 
Path=/; 
Max-Age=2592000; 
HttpOnly; 
Secure
  • 解析:7天有效期、HTTPS传输、禁止JS访问,适用于用户登录令牌。

2. 跨子域名共享数据

Set-Cookie: user_preference=dark; 
Domain=.example.com; 
Path=/; 
Max-Age=86400
  • 解析:主域名与所有子域名(如blog.example.com)均可访问该Cookie。

四、扩展问题

1. Cookie与LocalStorage的区别?
  • Cookie随HTTP请求发送,适合存储少量认证数据;
  • LocalStorage不随请求发送,适合存储大量前端数据(如用户配置)。
2. 如何防范Cookie被窃取?
  • 必选HttpOnly+Secure,配合SameSite限制跨站请求;
  • 避免存储敏感信息(如密码),使用JWT等替代方案。
3. 浏览器对Cookie的限制?
  • 单个域名下Cookie数量通常限制为20-50个;
  • 单个Cookie大小限制约4KB,总存储量限制约4MB。