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

 

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

使用浏览器cookie

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

Set-Cookiemessage=Hello

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

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

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

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

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

cookie的安全性限制

cookie对浏览器独立

cookie对域名独立

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

     创建cookie

     可以通过给Response.Cookies集合添加cookie来创建新的cookieResponse.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——用于避免cookieJavascript访问;

Name——cookie的名称;

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

Value——读写cookie的值;

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

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

删除cookie

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

使用多值cookie

因为对单个域名浏览器不能存储超过20cookie,可以通过创建多值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;

 

 

 

posted on 2009-05-05 09:54  边写边唱  阅读(304)  评论(0编辑  收藏  举报

导航