ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ASP.NET2.0揭秘读书笔记五——维护应用程序状态之cookie

ASP.NET2.0揭秘读书笔记五——维护应用程序状态之cookie

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-05-12 15:21:55 0 删除 编辑

浏览器Cookies用于关联一些文本到网站的每一个用户。

使用浏览器cookie

当Web服务器端创建一个cookie时,一个附加的HTTP首部在浏览器显示页面时被发送到浏览器。HTTP首部类似如下形式:

Set-Cookie:message=Hello

Set-Cookie首部使得浏览器创建一个名为message的cookie包含值Hello。

在浏览器创建cookie以后,它从相同的应用程序请求页面时都将会把cookie的信息发送给Web服务器端。

一个cookie就是一段文本,cookie只用用于存储字符串值。

 实际上,我们可以存储两种类型的cookie,一种是会话cookie,一种是持久化cookie。会话cookie只存储在内存中,关闭浏览器就消失了,持久化cookie则被保存到用户电脑上,可以持久化。注意,持久化cookie是对浏览器独立的,即不同浏览器创建的cookie保存的位置不同,也不能共享。

另外,cookie保存的信息都是以明文形式的,所以敏感信息不要保存到cookie上。

cookie的安全性限制

cookie对浏览器独立

cookie对域名独立

一个域名存储的cookie总大小不能超过4096byte。这个大小的限制,包含所有的cookie名称和值在内。大多数浏览器限制一个域名不超过20个cookie。

     创建cookie

     可以通过给Response.Cookies集合添加cookie来创建新的cookie。Response.Cookies集合包含所有Web服务器端发送到浏览器的cookie。

  Response.Cookies["message"].Value = txtCookieValue.Text;

  以上代码只创建一个会话cookie,关闭浏览器就会消失。如果需要创建持久化cookie,则需要为cookie指定一个过期时间。

     Response.Cookies["counter"].Value = counter.ToString();
     Response.Cookies["counter"].Expires = DateTime.Now.AddYears(2);

读取cookie

Request.Cookies集合可以读取cookie。

if (Request.Cookies["message"] != null)
    lblCookieValue.Text = Request.Cookies["message"].Value;

设置cookie属性

HttpCookie类代表cookie,当创建或读取一个cookie时,可以使用该类下面的这些属性:

Domain——设置关联cookie的域名;

Expires——通过给定一个过期时间来创建一个持久化cookie;

HasKeys——用于指定一个cookie是否是一个多值cookie;

HttpOnly——用于避免cookie被Javascript访问;

Name——cookie的名称;

Path——关联到cookie的路径,默认为/;

Value——读写cookie的值;

Secure——用于指定cookie需要通过安全Socket层连接传递;

Values——使用多值cookie时,用于读写特定的值。

删除cookie

设定cookie的Expires的值为过去时间即可。

使用多值cookie

因为对单个域名浏览器不能存储超过20个cookie,可以通过创建多值cookie来突破该限制。多值cookie是一个包含子键的单一cookie。可以根据需要创建任意数量的子键。

Response.Cookies["preferences"]["firstName"] = txtFirstName.Text;

        Response.Cookies["preferences"]["lastName"] = txtLastName.Text;

        Response.Cookies["preferences"]["favoriteColor"] = txtFavoriteColor.Text;

        Response.Cookies["preferences"].Expires = DateTime.MaxValue;

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-594858/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5307511