鲁斯前端布鲁斯前端

文章中英模式

布鲁斯前端面试题目 - HTTP Cookie 详解

深入解析HTTP Cookie的工作原理、属性设置、安全考量与应用场景。掌握前端面试中关于Cookie的核心知识,包括SameSite策略和存储方式比较。

影片縮圖

懒得看文章?那就来看视频吧

🔥 常见面试题目

(一) HTTP Cookie的基本原理是什么?它有哪些限制?

解答:HTTP Cookie是网站存储在用户浏览器的小型文本数据。

工作原理:

  1. 1. 服务器发送Set-Cookie头
  2. 2. 浏览器保存Cookie
  3. 3. 后续请求自动带上Cookie头

// 服务器响应

HTTP/1.1 200 OK

Set-Cookie: userId=123; Expires=Wed, 21 Oct 2023 07:28:00 GMT

// 后续请求

GET /api/profile HTTP/1.1

Cookie: userId=123

主要限制:

  • 1. 单个Cookie大小约4KB
  • 2. 每域名Cookie数量限制(约50-180个)
  • 3. 无法跨域访问
  • 4. 可被用户删除或禁用
  • 5. 受隐私法规限制
  • 6. 增加HTTP请求大小

(二) Cookie的SameSite属性有什么作用?不同值有何区别?

解答:SameSite属性控制Cookie是否在跨站请求中发送,主要用于防止CSRF攻击。

Strict

仅同站请求发送

外部链接跳转不带Cookie

Lax (默認)

同站请求+顶级导航

点击链接带Cookie,iframe不带

None

所有跨站请求发送

需配合Secure属性(HTTPS)

// 严格模式

Set-Cookie: sessionId=abc123; SameSite=Strict

// 宽松模式 (Chrome默认)

Set-Cookie: sessionId=abc123; SameSite=Lax

// 允许跨站

Set-Cookie: sessionId=abc123; SameSite=None; Secure

(三) Cookie、localStorage和sessionStorage的使用场景分别是什么?

解答:三种存储机制各有适用场景:

Cookie

  • 1. 自动发送到服务器
  • 2. 身份验证令牌
  • 3. 跨标签页共享
  • 4. 可设置过期时间
  • 5. 容量小(~4KB)

document.cookie = "theme=dark; max-age=86400";

localStorage

  • 1. 永久存储
  • 2. 用户偏好设置
  • 3. 跨标签页共享
  • 4. 不发送到服务器
  • 5. 容量大(~5MB)

localStorage.setItem("theme", "dark");

sessionStorage

  • 1. 仅当前标签页
  • 2. 表单暂存数据
  • 3. 一次性流程状态
  • 4. 标签关闭自动清除
  • 5. 容量大(~5MB)

sessionStorage.setItem("formData", JSON.stringify(data));