HTTP Cookie
HTTP Cookie(又称Web cookie、浏览器cookie,中文俗称数码存根、小型文本文件或小甜餅)是服务器发送给用户网页浏览器的一小段数据[1][2]。浏览器可以存储这些数据,并在之后的请求中将其发送回同一服务器[1][8]。Cookie使原本无状态的HTTP协议能够维持状态信息,从而让Web服务器能够在用户的设备上存储会话状态(如购物车内容)或跟踪用户的浏览活动(如登录状态或页面访问记录)[2][8]。该技术由网景员工卢·蒙特利于1994年发明[4][5],首次实现于1994年10月13日发布的网景导航者0.9beta版[5][6]。Cookie现已成为Web的基础技术之一,被所有主流浏览器所支持[5]。
| 英文名 | HTTP cookie[1] |
|---|---|
| 别名 | Web cookie、浏览器cookie、数码存根、小型文本文件、小甜餅[2][3] |
| 发明者 | 卢·蒙特利(Lou Montulli)[4][5] |
| 发明时间 | 1994年6月[4] |
| 首次实现 | 网景导航者0.9beta版(1994年10月13日)[5][6] |
| 相关标准 | RFC 6265[7] |
| 类型 | 状态管理机制、HTTP标头[8] |
历史
编辑“Cookie”一词由网景浏览器程序员卢·蒙特利(Lou Montulli)创造,其源头可追溯至1979年就已出现的UNIX程序“magic cookie”——指程序收发的数据包[2]。而“magic cookie”一词本身则源自幸运饼(fortune cookie)[2]。
1994年6月,蒙特利在网景工作时想到了将cookie概念应用于Web通信的点子[2][9]。当时网景正为MCI开发电子商务应用程序,MCI方面不希望总是由其服务器保存事务状态,要求网景将状态存储在用户计算机上,Cookie便是网景提出的解决方案[2]。同年,蒙特利与约翰·詹南德雷亚(John Giannandrea)一起编写了最初的网景Cookie规范[2][9]。
1994年10月13日,网景导航者(Netscape Navigator)0.9beta版发布,成为首个支持Cookie的浏览器[6][10]。其公开的首次使用目的是检查网景网站的访问者是否已经访问过该网站[2]。蒙特利于1995年申请了Cookie技术的专利[2]。
此后,所有主流浏览器逐渐开始支持Cookie[5][9]。1997年,RFC 2109首次对Cookie机制进行了标准化定义[3]。2011年发布的RFC 6265取代了RFC 2109和RFC 2965,成为当前Cookie的正式标准[7]。
工作原理
编辑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[8]。
- 第三方Cookie(Third-party cookie):由当前访问网站之外的第三方(如广告网络)通过嵌入内容(如广告或图片)所设置的Cookie,常用于跨站点跟踪用户行为[8]。
安全与隐私
编辑Cookie技术自诞生以来,其隐私和安全问题一直备受关注[8]。
标准与规范
编辑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 1.12 使用 HTTP Cookie — MDN Web Docs
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 Cookie — 维基百科
- ↑ 3.0 3.1 3.2 3.3 Cookie — 维基百科(存档)
- ↑ 4.0 4.1 4.2 Cookie — 维基百科
- ↑ 5.0 5.1 5.2 5.3 5.4 5.5 网景 — 百度百科
- ↑ 6.0 6.1 6.2 Cookie — 维基百科
- ↑ 7.0 7.1 7.2 使用 HTTP Cookie — MDN Web Docs
- ↑ 8.00 8.01 8.02 8.03 8.04 8.05 8.06 8.07 8.08 8.09 8.10 8.11 8.12 8.13 HTTP cookie — Wikipedia
- ↑ 9.0 9.1 9.2 cookie 的起源 — W3Cschool
- ↑ Cookies:被妖魔化的在线隐私威胁 — ZOL新闻
- ↑ 11.0 11.1 解读爬虫中HTTP的秘密(高阶篇) — 腾讯云
- ↑ 12.0 12.1 Set-Cookie — MDN Web Docs
- ↑ Cookie — MDN Web Docs