本页使用了标题或全文手工转换

Cookie

维基百科,自由的百科全书
跳到导航 跳到搜索

Cookie(复数形態:Cookies),又稱「小甜餅」。類型為「小型文字檔案[1],指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。由网景公司的前雇员盧·蒙特利在1993年3月發明[2]。最初定義於RFC 2109。目前使用最广泛的Cookie标准却不是RFC中定义的任何一个,而是在网景公司制定的标准上进行扩展后的产物。

分类[编辑]

Cookie 保存在客户端中,按在客户端中的存储位置,可分为内存 Cookie 和硬盘 Cookie。

内存 Cookie 由浏览器维护,保存在内存中,浏览器关闭即消失,存在时间短暂。硬盘 Cookie 保存在硬盘裡,有过期时间,除非用户手动清理或到了过期时间,硬盘 Cookie 不会清除,存在时间较长。所以,按存在时间,可分为非持久 Cookie 和持久 Cookie。

用途[编辑]

因为 HTTP 协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式 Web 应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于 HTTP 的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么,所以 Cookie 就是用来绕开 HTTP 的无状态性的“额外手段”之一。服务器可以设置或读取 Cookies 中包含的信息,借此维护用户跟服务器会话中的状态。

在刚才的购物场景中,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段 Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把 Cookie 发送给服务器,于是服务器知道他之前选购了什么。用户继续选购饮料,服务器就在原来那段 Cookie 里追加新的商品信息。结帐时,服务器读取发送来的 Cookie 即可。

Cookie 另一个典型的应用是当登录一个网站时,网站往往会请求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。如果勾选了,那么下次访问同一网站时,用户会发现没输入用户名和密码就已经登录了。这正是因为前一次登录时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的 Cookie 到用户的硬盘上。第二次登录时,如果该 Cookie 尚未到期,浏览器会发送该 Cookie,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。

Cookie 的缺陷[编辑]

  1. Cookie 会被附加在每个 HTTP 请求中,所以无形中增加了流量。
  2. 由于 HTTP 请求中的 Cookie 是明文传递的,所以安全性成问题,除非使用超文本传输安全协定
  3. Cookie 的大小限制在 4 KB 左右,对于复杂的存储需求来说是不够用的。[3]

使用 Cookie[编辑]

用户可以改变浏览器的设置,以使用 Cookie。同时一些浏览器自带或安装开发者工具包允许用户查看、修改或删除特定网站的 Cookie 信息。

识别功能[编辑]

如果在一台计算机中安装多个浏览器,每个浏览器都会以独立的空间存放 Cookie。因为 Cookie 不但可确认用户信息,还包含计算机和浏览器的信息,所以一个用户使用不同的浏览器登录或者用不同的计算机登录,都会得到不同的 Cookie 信息,另一方面,对于在同一台计算机上使用同一浏览器的多用户群,Cookie 不会区分他们的身份,除非他们使用不同的用户名登录。