5.1 Cookie的概念和特性

Cookie是设计交互式网页的一项重要技术,它可以将一些简短的数据存储在用户的计算机上,这些存放在用户计算机上的变量数据,称为Cookie。当浏览器向服务器提出网页浏览请求时,服务器根据存储在用户计算机上的Cookie内容,针对此浏览器显示其专门的内容。

5.1.1 什么是Cookie

Cookie原意是指就着牛奶一起吃的点心。然而,在互联网内,Cookie这个词有了完全不同的意思。那么Cookie到底是什么呢?Cookie是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表),这是很有用的。Cookie是一个存储在浏览器目录的文本文件,当浏览器运行时,存储在RAM中。一旦用户从该网站或网络服务器退出,Cookie也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止所有的Cookie。Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。

目前有些Cookie是临时的,有些则是持续的。临时的Cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间,该Cookie就会被系统清除。持续的Cookie则保存在用户的Cookie文件中,下一次用户返回时,仍然可以对它进行调用。在Cookie文件中保存Cookie,有些用户担心Cookie中的用户信息被一些别有用心的人窃取,而造成一定的损害。其实,网站以外的用户无法跨过网站来获得Cookie信息。如果因为这种担心而屏蔽Cookie,肯定会因此拒绝访问许多站点页面。因为,当今有许多Web站点开发人员使用Cookie技术,例如Session对象的使用就离不开Cookie的支持。

Cookie必须在HTML文件的内容输出之前设置;不同的浏览器(如Netscape Navigator、Internet Explorer)对Cookie的处理不一致,使用时一定要考虑;客户端用户如果设置禁止Cookie,则Cookie不能建立。一个浏览器能创建的Cookie数量最多为300个,并且每个不能超过4KB,每个Web站点能设置的Cookie总数不能超过20个。

Cookie是由Web服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。通过让服务器读取它原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全需求不高的场合避免用户重复输入名字和密码、门户网站的主页制定、有针对性地投放广告等。

Cookie数据存储的功能由浏览器本身所提供,因此,Cookie功能必须有浏览器的支持才能实现,一般通用的浏览器(如IE)都支持此功能。

当用户打开的网页中包含Cookie程序代码,此时服务器端会建立Cookie数据,然后将这个Cookie传送到客户端用户的计算机上,图5-1所示为Cookie示意图。

图5-1 Cookie示意图

当Cookie的数据传送至客户端的计算机后,便存储在浏览器当中,此时服务器端的网页都可以访问这个Cookie的数据内容,而当用户关闭浏览器的时候,Cookie的数据便会消失。

若服务器在建立Cookie时设置了Cookie的存在时间期限,则用户在关闭浏览器后,Cookie的数据会以文本文件存储在用户的计算机上,只要在设置的时间期限内,当用户连接网页时,服务器端的网页均可使用先前Cookie的内容,等过了所设置的期限,Cookie中的数据便会自动被删除。

5.1.2 Cookie的常见用途

Cookie最根本的用途是帮助Web站点保存有关访问者的信息。更概括地说,Cookie是一种保持Web应用程序连续性(即执行“状态管理”)的方法。浏览器和Web服务器除了在短暂的实际信息交换阶段以外总是断开的,而用户向Web服务器发送的每个请求都是单独处理的,与其他所有请求无关。然而在大多数情况下,都有必要让Web服务器在用户请求某个页面时对其进行识别。例如,购物站点上的Web服务器跟踪每个购物者,以便站点能够管理购物车和其他与用户相关的信息。因此Cookie的作用就类似于名片,它提供了相关的标识信息,可以帮助应用程序确定如何继续执行。Cookie是用户浏览某网站时,网站存储在用户机器上的一个小文本文件,它记录了用户的用户ID、密码、浏览过的网页、停留的时间等信息,当用户在某个网站注册后,就会收到一个唯一用户ID的Cookie。当用户再次来到该网站时,网站通过读取Cookie,这个用户ID会自动返回,服务器对它进行检查,确定它是否为注册用户且选择了自动登录,这样,用户无须给出明确的用户名和密码,就可以访问服务器上的资源;网站可以使用Cookie记录用户的意愿。对于简单的设置,网站可以直接将页面的设置存储在Cookie中完成定制。然而对于更复杂的定制,网站只需将一个唯一的标识符发送给用户,由服务器端的数据库存储每个标识符对应的页面设置做出相应的动作,如在页面显示“欢迎你”的标语等。

几乎所有的网站设计者在进行网站设计时都使用了Cookie,因为他们都想给浏览网站的用户提供一个更友好的、人文化的浏览环境,同时也能更加准确地收集访问者的信息。Cookie的常见用途如下。

(1)网站浏览人数管理。

由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一的ID。使用Cookie,网站可以完成以下工作:测定多少人访问过;测定访问者中有多少是新用户(即第一次来访),多少是老用户;测定一个用户多久访问一次网站。

通常情况下,网站设计者是借助后台数据库来实现以上目的的。当用户第一次访问该网站时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数或判断用户是新用户还是老用户。

(2)按照用户的喜好定制网页外观。

现在许多网站上都有新用户注册这一项,注册以后,等到下次再访问该站点时,会自动识别用户,并且向用户问好,是不是觉得很亲切?有的网站设计者为用户提供了改变网页内容、布局和颜色的权利,允许用户输入自己的信息,然后通过这些信息对网站的一些参数进行修改,以定制网页的外观。当然这种作用只是表面现象,更重要的是,网站可以利用Cookie跟踪统计用户访问该网站的习惯,比如:什么时间访问,访问了哪些页面,在每个网页的停留时间,等等。利用这些信息,一方面可以为用户提供个性化的服务,另一方面也可以作为了解用户行为的工具,对于网站经营策略的改进有一定参考价值。例如,用户在某家航空公司站点查阅航班时刻表,该网站可能就创建了包含用户旅行计划的Cookies,也可能它只记录了用户在该站点上曾经访问过的Web页,在用户下次访问时,网站根据用户的情况对显示的内容进行调整,将用户所感兴趣的内容放在前列。这是高级的Cookie应用。目前Cookie最广泛的是记录用户登录信息,这样下次访问时可以不需要输入自己的用户名、密码了——当然这种方便也存在用户信息泄露的问题,尤其在多个用户共用一台电脑时很容易出现这样的问题。

(3)在电子商务站点中实现诸如“购物篮”等功能。

可以使用Cookie记录用户的ID,这样当用户在“购物篮”中放了新东西时,网站就能记录下来,并在网站的数据库里对应着用户的ID记录。当用户“买单”时,网站通过ID检索数据库中用户的所有选择,就能知道用户的“购物篮”里有些什么。

在一般事例中,网站的数据库能够保存的有用户所选择的内容、浏览过的网页、在表单里填写的信息等;而包含有用户唯一ID的Cookie则保存在用户的电脑里。

Cookies给网站和用户带来的好处非常多:

Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。

Cookie能告诉在线广告商其广告被点击的次数,从而可以更精确地投放广告。

Cookie有效期限未到时,能使用户在不输入密码和用户名的情况下进入曾经浏览过的一些站点。

Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务。