魯斯前端布魯斯前端

文章中英模式

布魯斯前端面試題目 - 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));