🚀 前言
在使用網站時,你是否想過:
- 為什麼重新整理頁面後仍然保持登入?
- 為什麼購物車的商品不會突然消失?
- 為什麼網站能記住你的語言或主題設定?
這些便利功能背後,都依賴 Cookie 與 Session。
本文將以最生活化的方式,帶你理解:
- 網站如何「記住你」
- Cookie 與 Session 的差異
- 它們在登入與使用者識別中的角色
✅ 基礎概念
🍪 Cookie 是什麼?
Cookie 就像放在你瀏覽器裡的一張小紙條。
網站本身不會記得你是誰,因此會把一段小資訊(Cookie)交給你的瀏覽器保存。
Cookie 的特性:
- 儲存在瀏覽器端
- 內容是小型文字資料
- 每次向網站發送請求時會自動附帶
常見用途:
- 記住登入狀態
- 保存語言、主題等偏好
- 分析與廣告追蹤(如 Google Analytics)
🔐 Session 是什麼?
Session 就像伺服器替你準備的一個私人儲物櫃。
當你登入時,伺服器會建立一個 Session,裡面放:
- 使用者 ID
- 登入狀態
- 其他必要資訊
Session 的特性:
- 儲存在伺服器端
- 以 Session ID 作為識別
- 用於管理登入期間的資料
🔗 Cookie 與 Session 的關係
兩者通常是 一起使用 的。
流程如下:
- 使用者登入
- 伺服器建立 Session(儲物櫃)
- 伺服器把 Session ID(鑰匙)放進 Cookie
- 瀏覽器下次訪問時會自動帶上 Cookie
- 伺服器根據 Session ID 找到對應的 Session
- 成功還原登入狀態
Cookie = 鑰匙
Session = 儲物櫃
❓ 如果沒有 Cookie 與 Session 會怎樣?
- 每次都要重新登入
- 購物車內容會消失
- 語言、主題設定無法保存
- 網站無法辨識使用者
因為 HTTP 是「無狀態(Stateless)」的協定,每次請求都是獨立的,因此需要 Cookie/Session 來補足「記憶能力」。
💡 小知識與補充
🍪 Cookie 名稱的由來:Fortune Cookie
Cookie 的命名靈感來自美國的 幸運籤餅(Fortune Cookie)。
因為裡面藏著一張小紙條,與 Cookie 儲存小資訊的概念相似。
🔑 Session ID 是絕對不能外洩的「鑰匙」
若 Session ID 被竊取,攻擊者就能冒充你的身分登入網站。
因此網站會採取以下安全措施:
- 使用 HTTPS 加密
- 設定 Cookie 的 Secure、HttpOnly 屬性
- 設定短效期
- 避免在 URL 中傳遞 Session ID(技術上錯誤的做法,已被淘汰)
🧁 Cookie 會過期,也能手動刪除
Cookie 有有效期限,到期後會自動消失。
若你突然被登出,可能是 Cookie 過期或被清除。
📚 參考資料
官方文件
- MDN Web Docs(Cookie)
https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies - MDN Web Docs(Session 管理)
https://developer.mozilla.org/ja/docs/Web/HTTP/Session - MDN Web Docs(HTTP 基礎)
https://developer.mozilla.org/ja/docs/Web/HTTP/Overview
Wikipedia
- Cookie
https://ja.wikipedia.org/wiki/HTTP_cookie - Session 管理
https://ja.wikipedia.org/wiki/セッション管理
🛠️ 延伸閱讀(建議下一步)
- HTTP 的 Stateless 特性

Coming Soon
- HTTPS 與安全性

Coming Soon
- JWT(JSON Web Token)
Cookie/Session 的替代方案 - SameSite、Secure 屬性
提升 Cookie 安全性 - LocalStorage / SessionStorage
了解瀏覽器端更多儲存方式
🎯 總結
- Cookie 是瀏覽器的小紙條
- Session 是伺服器的私人儲物櫃
- Cookie 通常存放 Session ID(鑰匙)
- 兩者搭配才能記住登入狀態、購物車、偏好設定
- Session ID 必須妥善保護
- 想更深入可學習 HTTP、HTTPS、JWT 等主題
