HTTP Cookie
HTTP Cookie(又稱Web cookie、瀏覽器cookie,中文俗稱數碼存根、小型文本文件或小甜餅)是伺服器發送給用戶網頁瀏覽器的一小段數據[1][2]。瀏覽器可以存儲這些數據,並在之後的請求中將其發送回同一伺服器[1][3]。Cookie使原本無狀態的HTTP協議能夠維持狀態信息,從而讓Web伺服器能夠在用戶的設備上存儲會話狀態(如購物車內容)或跟蹤用戶的瀏覽活動(如登錄狀態或頁面訪問記錄)[2][3]。該技術由網景員工盧·蒙特利於1994年發明[4][5],首次實現於1994年10月13日發布的網景導航者0.9beta版[5][6]。Cookie現已成為Web的基礎技術之一,被所有主流瀏覽器所支持[5]。
歷史
「Cookie」一詞由網景瀏覽器程式設計師盧·蒙特利(Lou Montulli)創造,其源頭可追溯至1979年就已出現的UNIX程序「magic cookie」——指程序收發的數據包[2]。而「magic cookie」一詞本身則源自幸運餅(fortune cookie)[2]。
1994年6月,蒙特利在網景工作時想到了將cookie概念應用於Web通信的點子[2][7]。當時網景正為MCI開發電子商務應用程式,MCI方面不希望總是由其伺服器保存事務狀態,要求網景將狀態存儲在用戶計算機上,Cookie便是網景提出的解決方案[2]。同年,蒙特利與約翰·詹南德雷亞(John Giannandrea)一起編寫了最初的網景Cookie規範[2][7]。
1994年10月13日,網景導航者(Netscape Navigator)0.9beta版發布,成為首個支持Cookie的瀏覽器[6][8]。其公開的首次使用目的是檢查網景網站的訪問者是否已經訪問過該網站[2]。蒙特利於1995年申請了Cookie技術的專利[2]。
此後,所有主流瀏覽器逐漸開始支持Cookie[5][7]。1997年,RFC 2109首次對Cookie機制進行了標準化定義[9]。2011年發布的RFC 6265取代了RFC 2109和RFC 2965,成為當前Cookie的正式標準[10]。
工作原理
HTTP協議本身是無狀態(stateless)的,即伺服器對每個請求的處理相互獨立,不保留之前請求的任何信息[1][11]。Cookie機制繞開了HTTP的無狀態特性,為伺服器提供了一種識別和記憶用戶的手段[11]。
主要用途
分類
根據來源和生命周期,Cookie可分為以下類別:
- 會話Cookie(Session cookie):僅在瀏覽器會話期間存在,關閉瀏覽器後即被刪除。不設置過期時間(Expires)或最大存活時間(Max-Age)的Cookie即為會話Cookie[1]。
- 持久Cookie(Persistent cookie):設置了過期時間或最大存活時間,在到期前會一直存儲在用戶設備上,即使關閉瀏覽器也不會丟失[1]。
- 第一方Cookie(First-party cookie):由用戶當前訪問的網站所設置的Cookie[3]。
- 第三方Cookie(Third-party cookie):由當前訪問網站之外的第三方(如廣告網絡)通過嵌入內容(如廣告或圖片)所設置的Cookie,常用於跨站點跟蹤用戶行為[3]。
安全與私隱
Cookie技術自誕生以來,其私隱和安全問題一直備受關注[3]。
標準與規範
Cookie的標準化歷程如下:
參考文獻
- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 使用 HTTP Cookie — MDN Web Docs
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 Cookie — 維基百科
- ↑ 3.00 3.01 3.02 3.03 3.04 3.05 3.06 3.07 3.08 3.09 3.10 3.11 3.12 HTTP cookie — Wikipedia
- ↑ Cookie — 維基百科
- ↑ 5.0 5.1 5.2 5.3 網景 — 百度百科
- ↑ 6.0 6.1 Cookie — 維基百科
- ↑ 7.0 7.1 7.2 cookie 的起源 — W3Cschool
- ↑ Cookies:被妖魔化的在線私隱威脅 — ZOL新聞
- ↑ 9.0 9.1 9.2 Cookie — 維基百科(存檔)
- ↑ 10.0 10.1 使用 HTTP Cookie — MDN Web Docs
- ↑ 11.0 11.1 解讀爬蟲中HTTP的秘密(高階篇) — 騰訊雲
- ↑ 12.0 12.1 Set-Cookie — MDN Web Docs
- ↑ Cookie — MDN Web Docs