快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

ASP.NET中Cookie编程的基础知识(1)

简介

  Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方式。例如,当用户访问您的站点时,您可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问您的站点时,应用程序就可以检索以前保存的信息。

  本文概要介绍 Cookie 在 ASP.NET 应用程序中的应用,为您展示在 ASP.NET 中应用 Cookie 的技术细节,例如编写 Cookie、然后再读取它们。同时,还将为您介绍 Cookie 的各种特性和各种特别情况,以及 ASP.NET 对 Cookie 的支持。

  什么是 Cookie?

  Cookie 是一小段文本信息,伴随着用户哀求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。

  假设在用户哀求访问您的网站 www.contoso.com 上的某个页面时,您的应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie。用户的浏览器在获得页面的同时还得到了这个 Cookie,并且将它保存在用户硬盘上的某个文件夹中。

  以后,假如该用户再次访问您站点上的页面,当该用户输入 URL www.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 的更多背景信息,建议您阅读 Verizon Web 站点中的“How Internet Cookies Work”一文,地址为 http://www22.verizon.com/about/community/learningcenter/articles/displayarticle1/0,4065,1022z1,00.html(英文)。其作者具体解释了什么是 Cookie 以及 Cookie 是如何在浏览器和服务器之间交换信息的,他还全面总结了 Cookie 涉及的隐私问题。

  顺便问一下,您是否想知道它们为什么被称作“Cookie”?Jargon File(又称为“The New Hacker\\\'s Dictionary”)版本 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 和会话状态中阐述。

  注重:有关状态治理和 Web 应用程序中用于保存信息的选项的具体信息,请参阅 Introduction to Web Forms State(英文)和 State Management Recommendations(英文)。
更一般的经验很可能是,尽管 Cookie 在应用程序中异常有用,应用程序也不应该依靠于能够保存 Cookie。利用 Cookie 可以做到锦上添花,但不要利用它们来支持要害功能。假如您的应用程序必须使用 Cookie,则您可以通过测试来确定浏览器是否接受 Cookie。我在本文后面的检查浏览器是否接受 Cookie 一节中简朴介绍了一种测试方式。


返回类别: 教程
上一教程: C#中调用Windows API的要点
下一教程: 部署ASP.NET的三大技术(3)

您可以阅读与"ASP.NET中Cookie编程的基础知识(1)"相关的教程:
· ASP.NET中Cookie编程的基础知识(5)
· ASP.NET中Cookie编程的基础知识(6)
· ASP.NET中Cookie编程的基础知识(2)
· ASP.NET中Cookie编程的基础知识(4)
· ASP.NET中Cookie编程的基础知识(3)
    微笑服务 优质保证 索取样品