Cookie 是 Web 服务器保存在用户计算机上的文本文件的小块用户信息。每当用户访问 Web 服务器时,保存在用户计算机上的相关 Cookie 由客户端读取到服务器端,服务器端根据 Cookie 信息为用户制定服务,例如访客访问某网站时在页面中体现用户登录次数等。从本质上讲, Cookie 可以看作身份证。但它不能作为代码执行,也不会传送病毒,为用户所专有,并只能由提供它的服务器来读取。 Cookie 保存的信息片断以"名 / 值"对的形式储存。一个网站只能取得它放在用户计算机中的信息,它无法从其它 Cookie 文件中取得信息,也无法得到用户计算机上的其它任何信息。所以从这点上来讲, Cookie 本身不存在安全隐患。
同时, Cookie 是浏览器提供的一种机制。它将 Document 对象的 cookie 属性提供给 JavaScript ,可以由 JavaScript 对其进行控制。而 Cookie 并非 JavaScript 本身的性质。不同的浏览器对 Cookie 的实现也不一样,但其性质是相同的。
Cookie 是与 Web 站点而不是某个具体页面相关联的,所以无论用户访问该站点的任何一个页面,浏览器和 Web 服务器都交换 Cookie 信息。用户访问其它站点时,每个站点都可能向用户发送一个 Cookie ,而浏览器会将这些 Cookie 分别保存。
Cookie 包括临时和永久两种方式。临时的 Cookie 只对当前的浏览器会话可用;永久的 Cookie 在客户计算机上将自动生成一个文本文件,所以它在当前浏览器之外也可以使用。永久的 Cookie 是存于用户硬盘的一个文件,这个文件通常对应于一个域名。当浏览器再次访问这个域名时,便使这个 Cookie 可用。因此, Cookie 可以跨越一个域名下的多个网页,但不能跨越多个域名使用。
Cookie 文件通常是以 user@domain 格式命名的, user 是本地用户名, domain 是所访问的网站的域名。例如,一个名称为 administrator@D workspace4 。
只有 name 属性为必选属性。
Cookie 可以帮助 Web 服务器保存有关访客的信息。简单地说, Cookie 是一种保持 Web 服务器连续性的方法。在大多数情况下,当用户浏览器向 Web 服务器提出请求时,有必要让 Web 服务器在用户请求某个页面时对用户进行身份识别,这里使用 Cookie 尤为方便。它提供了相关的标识信息,可以帮助服务器确定如何处理浏览器的请求。
Cookie 主要用于如下场合:
保存登录状态:可以将登录成功的用户相关信息存储在 Cookie 中,这样该用户下次访问时可以不需要再重新登录。 Cookie 还可以设置过期时间。当超过时间期限后, Cookie 就会自动消失,这样提示用户登录的时间也可以进行限制。
跟踪用户行为:有一些网站可以根据访客的信息进行不同的处理,比如可以根据用户的 IP 地址报告当前此用户所在地的天气情况等。
创建购物车:在一些商务网站中, Cookie 可以记录用户曾经浏览过的商品的相关信息,最后在结账时可以统一提交。
实施民意测验:一个实施民意测验的站点可以利用 Cookie 来表示此用户是否已经参加了投票。可以设置 Cookie 的值为一个布尔类型的值,初始值为 false 。如果该访客已经进行投票,则设置 Cookie 值为 true,这样可以避免该用户进行重复投票。但是如果用户删除本地的 Cookie 值,依然可以进行重复投票操作。
Cookie 最大的优点在于它的持久性。当一个 Cookie 在用户的浏览器上被设置时,它可以存留几天、几个月,甚至几年,这样便于保存访问信息和用户状态。当该用户每次返回站点时,页面设置更加具有人性化。同时 Cookie 可以保持访客状态,可以存储用户在一个站点上已经访问的页面及其次数、查看过的广告等。
Cookie 经常与 JavaScript 语言一起使用。 JavaScript 语言中可以编写读取、写入、编辑 Cookie 的函数,使得 Cookie 在 JavaScript 语言中操作非常简便。同时,两者的结合可以使网页更具动态效果。
Cookie 除了具有以上优点之外,它的缺点也是有目共睹的。例如,它不能在不同浏览器间进行共享。当用户使用不同浏览器浏览相同页面时,不可以共享 Cookie 。所以不同浏览器之间的 Cookie 是不能相互访问的。例如,如果一个用户正使用 Mozilla 浏览器浏览某个网页,当该用户再次切换到 IE 浏览器时,即使浏览同一页面, Cookie 依然不可使用。
Cookie 是在浏览器访问 Web 服务器的某个资源时,由 Web 服务器在 HTTP 响应消息头文件中附带传递给浏览器的一些数据。如果浏览器保存了这些数据,当它每次访问该 Web 服务器时,都应在 HTTP 请求头文件中将这些数据回传给 Web 服务器。 Web 服务器将这些数据在 HTTP 请求头文件中使用 Set-Cookie 响应头字段将 Cookie 信息发送给浏览器,浏览器则通过在 HTTP 请求消息中增加Cookie 请求字段将 Cookie 回传给 Web 服务器,一个 Cookie 只能标识一种信息。一个 Web 服务器可以给浏览器发送多个 Cookie ,这样 Web 服务器和浏览器之间可以使用多个 Cookie 来传递多种信息。
当用户在浏览器地址栏中输入一个 Web 服务器的 URL 时,浏览器向 Web 服务器发送一个读取网页的请求, Web 服务器将返回结果给浏览器,并将页面显示在浏览器上,同时该 Web 服务器在用户的计算机上寻找相应的 Cookie 文件。如果找到,浏览器会将 Cookie 文件中的字符串连同前面用户输入的 URL 一起发送到 Web 服务器中,服务器收到 Cookie 数据后将检索该用户的相关信息,并增加相应的内容,写入 Cookie 中;如果 Web 服务器在用户的计算机上没有找到相应的 Cookie 文件,说明用户是第一次访问此网站,则浏览器只向服务器发送 URL ,不发送 Cookie 数据,服务器没有接收到 Cookie 数据,将 Cookie 数据放入网页的头文件中传递给客户端,浏览器会将此 Cookie 数据保存在本地计算机中。