cookie

来源:互联网 发布:js闭包循环面试题 编辑:程序博客网 时间:2024/05/16 17:28

 创建一个Cookie并将其写回到客户端

       HttpCookie testCookie=new HttpCookie("firstCookie");//创建一个名为firstCookie的Cookie对象。

       // HttpCookie testCookie=new HttpCookie("firstCookie","value1");//创建一个名为firstCookie的对象并且其只有一个值是"value"

       testCookie.Expires=DateTime.Now.AddDays(1);//设置Cookie的过期时间

       Response.Cookie.Add(testCookie);//将该Cookie输出到浏览器

      /*下面的是创建多值的Cookie*/

      HttpCookie MultiValueCookie = new HttpCookie("cookieTest2");
        MultiValueCookie.Values.Add("key1","value2");
        MultiValueCookie.Values.Add("key2","value3");
        MultiValueCookie.Expires = DateTime.Now.AddDays(1);
        Response.Cookies.Add(MultiValueCookie);

       在服务器端读取Cookie

         HttpCookie SingleValuesCookie=Request.Cookies["cookieTest1"];

          Response.Write(SingleValuesCookie.Value);//输出Cookie的值

          Response.Write(SingleValuesCookie.Expires);//输出Cookie的过期时间

  • 我们发现,所有Cookie的过期时间都不能正常显示。这是因为浏览器返回给服务器的Cookie是不包含过期时间的,而服务器返回给浏览器的Cookie是包含过期时间的。过期时间只对客户端浏览器有意义,对服务器来说没有什么意义。(在此产生一个疑问就是怎么在服务器端判断获取的Cookie已经过期)

          删除Cookie

下面是删除Cookie的操作。

 

protected void btn_DelCookie_Click(object sender, EventArgs e)

{

    HttpCookie SingleValueCookie = Request.Cookies["test1"];

    SingleValueCookie.Expires = DateTime.MinValue;

    Response.Cookies.Add(SingleValueCookie);

}

 

如果你想删除所有Cookie,可以遍历删除。

 

protected void btn_DelCookie_Click(object sender, EventArgs e)

{

    foreach (string key in Request.Cookies.AllKeys)

    {

        HttpCookie cookie = Request.Cookies[key];

        cookie.Expires = DateTime.MinValue;

        Response.Cookies.Add(cookie);

    }

}

 

我们始终要记住,服务器不能直接删除Cookie,删除Cookie的操作是浏览器进行的。说是删除,其实是把它的过期时间设置为过去的时间,让Cookie过期。因此,对于删除操作来说有三个步骤。

1.从Request对象中获取Cookie。

2.把Cookie的过期时间设置为过去的时间。

3.把Cookie重新写回Response中。

4.修改Cookie的操作也非常简单。

 

protected void btn_ModifyCookie_Click(object sender, EventArgs e)

{

    HttpCookie SingleValueCookie = Request.Cookies["test1"];

    SingleValueCookie.Value = "修改后的单值Cookie";

    Response.Cookies.Add(SingleValueCookie);

}

 

 

Cookie总结

Cookie虽然是一个简单实用的对象,但是我们也要注意Cookie的工作原理、大小限制以及安全性等,大致可以归纳为以下几点。

  • 存储的物理位置。客户端的Cookies文件夹内。
  • 存储的类型限制。字符串。
  • 状态使用的范围。当前请求上下文的上下文都能访问到Cookie,Cookie对每个用户来说都是独立的。
  • 存储的大小限制。每个Cookie不超过4K数据。每个网站不超过20个Cookie。所有网站的Cookie总和不超过300个。
  • 生命周期。每个Cookie都有自己的过期时间,超过了过期时间后失效。
  • 安全与性能。存储在客户端,安全性差。对于敏感数据建议加密后存储。
  • 优点缺点与注意事项。可以很方便地关联网站和用户,长久保存用户设置。
0 0
原创粉丝点击