您的位置:首页 > 其它

Net cookie 添加/修改/删除

2012-07-23 17:46 176 查看

Net cookie

概述:Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。
例如,如果在用户请求站点中的页面时应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie,用户的浏览器在获得页面的同时还获得了该 Cookie,并将它存储在用户硬盘上的某个文件夹中。
以后,如果该用户再次请求您站点中的页面,当该用户输入 URL 时,浏览器便会在本地硬盘上查找与该 URL 关联的 Cookie。如果该 Cookie 存在,浏览器便将该 Cookie 与页请求一起发送到您的站点。然后,应用程序便可以确定该用户上次访问站点的日期和时间。您可以使用这些信息向用户显示一条消息,也可以检查到期日期。
限制cookie的域范围(出于安全考虑,只能跨子域)
Cookie只允许在主域和多个子域间共享,通过Domain属性设置。
Cookie中的3个键,name,path,domain中,只要有任何1个键值不同,就会产生同名的Cookie。所以对指定cookie进行修改、删除的时候要注意保证cookie是同一个。

①:添加cookie
HttpCookie cookie = new HttpCookie("Extension");
/*默认情况下,Cookie 与特定域关联。
*用 Domain 属性创建可在多个子域间共享的 Cookie,
*随后 Cookie 将可用于主域ispeak.cn,也可用于d.ispeak.cn、t.ispeak.cn。
* */
cookie.Domain = "ispeak.cn";
cookie["roomid"] = "1";
DateTime date = DateTime.Now.AddDays(3);//设定过期时间为3天
/*只有服务端返回cookie时候给制定过期时间,
*服务器在获取客户端的cookie的时候是获取不到其过期时间的,
*所以如果想在服务端获取cookie的过期时间,把过期时间作为键传过期是个办法
* */
cookie["date"] = date.ToString();
cookie.Expires = date;
Response.Cookies.Add(cookie);



②:修改cookie值,(如果只是想改上面cookie的一个键值,那么就必须要cookie的4个键值相同,浏览器才会覆盖旧的cookie)
一个网站的Cookie里面可以具备有2个或更多个相同名字的键,即:Cookie中的3个键,name,path,domain中,只要有任何1个键值不同,就会产生同名的Cookie。
HttpCookie cok = Request.Cookies["Extension"];
if (cok != null)
{string roomid = cok["roomid"].ToString();
string date = cok["date"].ToString();//过期时间
cok.Domain = "ispeak.cn";
cok.Expires = Convert.ToDateTime(date);
cok.Values.Set("roomid", "0");//修改多值cookie的一个子键值
Response.AppendCookie(cok);}



③:删除cookie

ASP.NET中不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。调用 Cookies集合的 Remove方法可从服务器端的集合中删除Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,则向 Cookie 分配已过去的到期日期
HttpCookie cok = Request.Cookies["Extension"];
if (cok != null)
{
cok.Expires = DateTime.Now.AddDays(-1);
cok.Domain = "ispeak.cn";
Response.Cookies.Add(cok);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: