简介
Cookie为Web应用
程序保存用户相关信息提供了一种有用的方法。例如,当用户访问您的站点时,您可以利用Cookie保存用户首选项或其他信息,这样,当用户下次再访问您的站点时,应用程序就可以检索以前保存的信息。
本文概要介绍Cookie在ASP.
NET应用程序中的应用,为您展示在ASP.NET中应用Cookie的技术细节,例如编写Cookie、然后再读取它们。同时,还将为您介绍Cookie的各种特性和各种特殊情况,以及ASP.NET对Cookie的支持。
什么是Cookie?
Cookie是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。
假设在用户请求访问您的网站www.contoso.com上的某个页面时,您的应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的Cookie。用户的浏览器在获得页面的同时还得到了这个Cookie,并且将它保存在用户硬盘上的某个文件夹中。
以后,如果该用户再次访问您站点上的页面,当该用户输入URLwww.contoso.com时,浏览器就会在本地硬盘上查找与该URL相关联的Cookie。如果该Cookie存在,浏览器就将它与页面请求一起发送到您的站点,您的应用程序就能确定该用户上一次访问站点的日期和时间。您可以根据这些信息向用户发送一条消息,也可以检查过期时间或执行其他有用的功能。
Cookie是与Web站点而不是与具体页面关联的,所以无论用户请求浏览站点中的哪个页面,浏览器和服务器都将交换www.contoso.com的Cookie信息。用户访问其他站点时,每个站点都可能会向用户浏览器发送一个Cookie,而浏览器会将所有这些Cookie分别保存。
以上就是Cookie的基本
工作原理。那么,Cookie有哪些用途呢?最根本的用途是Cookie能够帮助Web站点保存有关访问者的信息。更概括地说,Cookie是一种保持Web应用程序连续性(即执行“状态管理”)的方法。浏览器和Web服务器除了在短暂的实际信息交换阶段以外总是断开的,而用户向Web服务器发送的每个请求都是单独处理的,与其他所有请求无关。然而在大多数情况下,都有必要让Web服务器在您请求某个页面时对您进行识别。例如,购物站点上的Web服务器跟踪每个购物者,以便站点能够管理购物车和其他的用户相关信息。因此Cookie的作用就类似于名片,它提供了相关的标识信息,可以帮助应用程序确定如何继续执行。
使用Cookie能够达到多种目的,所有这些目的都是为了使Web站点记住您。例如,一个实施民意测验的站点可以简单地利用Cookie作为布尔值,表示您的浏览器是否已经参与了投票,从而避免您重复投票;而那些要求用户登录的站点则可以通过Cookie来确定您是否已经登录过,这样您就不必每次都输入凭据。
有关Cookie的更多背景信息,建议您阅读VerizonWeb站点中的“HowInternetCookiesWork”一文,地址为http://www22.verizon.com/about/community/learningcenter/articles/displayarticle1/0,4065,1022z1,00.html(英文)。其作者详细解释了什么是Cookie以及Cookie是如何在浏览器和服务器之间交换信息的,他还全面总结了Cookie涉及的隐私
问题。
顺便问一下,您是否想知道它们为什么被称作“Cookie”?JargonFile(又称为“TheNewHacker'sDictionary”)版本4.3.3对这一术语的词源给出了准确的定义和合理的解释。您可以在http://www.catb.org/~esr/jargon/jargon.html#cookie(英文)找到相关的条目。
在此后的内容中,本文将假设您已经知道什么是Cookie,并且假设您已经清楚为什么要在ASP.NET应用程序中使用Cookie。
Cookie的限制
在开始讨论Cookie的技术细节之前,我想先介绍一下Cookie应用的几条限制。大多数浏览器支持最多可达4096字节的Cookie,如果要将为数不多的几个值保存到用户
计算机上,这一空间已经足够大,但您不能用一个Cookie来保存数据集或其他大量数据。在实际应用中,您可能并不希望在Cookie中保存大量的用户信息,而只希望保存用户编号或其他标识符。之后,当用户再次访问您的站点时,您就可以使用该用户ID在数据库中查找用户的详细信息。(有关保存用户信息的说明,请参阅Cookie和安全性。)
浏览器还限制了您的站点可以在用户计算机上保存的Cookie数。大多数浏览器只允许每个站点保存20个Cookie。如果试图保存更多的Cookie,则最先保存的Cookie就会被删除。还有些浏览器会对来自所有站点的Cookie总数作出限制,这个限制通常为300个。
您最可能遇到的Cookie限制是:用户可以设置自己的浏览器,拒绝接受Cookie。您很难解决这个问题,除非完全不使用Cookie而是通过其他机制来保存用户相关信息。保存用户信息的一种
常用方法是会话状态,但会话状态又依赖于Cookie。这一点在后面的Cookie和会话状态中阐述。