• 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;

     

     

  • 相关阅读:
    献给正在奋斗的人
    Delphi TRzTreeView 或者TRzCheckTree或者TTreeView离开焦点还显示灰色的选择状态
    笑话(三)
    王永庆建立企业奖励机制
    DbGridEh表格Tile居中,但是内容左对齐的做法
    DelPhi LockWindowUpdate的函数的用法
    Delphi DbgridEh实现鼠标拖动选中列,并使复选框选中
    国足输球,总结原因
    TPath
    TMemoryStream、String与OleVariant互转
  • 原文地址:https://www.cnblogs.com/zoupeiyang/p/1449583.html
Copyright © 2020-2023  润新知