代码改变世界

Cookie学习笔记

2011-04-13 20:29  MichaelYin  阅读(280)  评论(0编辑  收藏  举报

Cookie用来用来将少量的数据存储到客户端的硬盘上,其形式是用户名@网站地址[数字].txt这个样子,当Cookie想对应的网站的时候,浏览器将存储在客户端的Cookie发送到服务器,服务器可以读取Cookie 中的数据并进行修改,由于Cookie是存储在客户端机器上的,所以在客户端也可以读写相应的Cookei文件.

Cookie中信息的保存是以键值对这样的形式来存储的。

Cookie的expires制定了cookie的生存期,如果不设置的话,cookie只在浏览器访问网站期间存在,关闭浏览器后,这个cookie就失效。如果设置了的话,浏览器会把cookie保存到相应的文件夹中(不同的浏览器保存的路径不一样),一旦超过了expires中设置的日期,浏览器会将cookie删除。

Cookie的Domain和Path标志了Cookie可以共用的范围,具体的信息可以查看这里

在服务器端是不能直接删除客户端的Cookie的,一般是通过将Cookie的到期日期设置为一个过去的日期,让客户端的浏览器来删除Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。在这里需要注意的是,如果设置了过期时间,你在Request读取这个Cookie的时候通过它的过期那个属性来获取它的过期时间是获取不到的,因为客户端浏览器发送给服务器的Cookie是不包含过期时间的,而服务器发送给客户端浏览器的Cookie是包含过期时间的。

实际项目中删除Cookie的是后也碰到了一个很奇怪的问题,网上流传的很多代码都是这样

    HttpCookie SingleValueCookie = Request.Cookies["test1"];
    SingleValueCookie.Expires = DateTime.MinValue;
    Response.Cookies.Add(SingleValueCookie);

实际中过期时间的设置没起到作用,后来还是使用AddDay(-1)来解决的这个问题,也不知道是为什么,很奇怪~

用到的相关资料

http://www.cnblogs.com/leleroyn/articles/1156630.html

http://www.cnblogs.com/wuxiaoqian726/articles/1778687.html