Cookie初探
1.我理解中的Cookie1.1.Cookie存储位置是客户端的1.2.Cookie存储数据,数据大小也是有限制的2.Cookie的用法
2.1.js对Cookie的操作(网上很多我就不自己总结了)var date = new Date();date.setTime(date.getTime() - 10000);//过期时间--这个的作用:添加(过期时间大于当前时间)和删除(过期时间小于当前时间)document.cookie = name + "=Cookie内容; expires=" + date.toGMTString();
读取Cookie
var l_varCookie=document.cookie;
2.2.C#对Cookie的操作
if (Request.Cookies["userInfo"] != null){Response.Write(Server.HtmlEncode(Request.Cookies["userInfo"].Value));}else {1.设置的Cookie方法一Response.Cookies["userInfo"].Value = "UserInfo";Response.Cookies["userInfo"].Path = "/WebSite1/CookieDemo/";}2.设置的Cookie方法二System.Web.HttpCookie newcookie = new HttpCookie("userInfo");newcookie.Value = "";newcookie.Expires = DateTime.Now.AddDays(-1);Response.AppendCookie(newcookie);Response.Redirect("default.aspx");创建带有子键的cookies:System.Web.HttpCookie newcookie=new HttpCookie("user");newcookie.Values["username"]="zxf";newcookie.Values["password"]="111";newcookie.Expires=DateTime.Now.AddDays(1);Response.AppendCookie(newcookie);有子键读取:if(Request.Cookies["user"]!=null){Response.Write(Server.HtmlEncode(Request.Cookies["user"]["username"].Value));Response.Write(Server.HtmlEncode(Request.Cookies["user"]["password"].Value));}
看起来好简单,但是我在开发中有一个这样的需求:
1.1.母版页面加载时判断Cookie是否有值,没有的话则赋值
1.2.点击一个a标签通过js清除cookie,并跳转页面需求很简单实用上面调查的就可以解决了,但是在做的过程中,使用js清除Cookie后,母版页面加载会判断Cookie是否有值,每次都是有值这样问题就来了。1.js的Cookie路径是当前页面所在的路径,而.net的Cookie的路径是当前服务器的根目录,也就是说js操作的和我母版页后台加载时处理的Cookie不是不是同一个解决方法:js和.net操作Cookie的路径设置一致设置Cookie的path属性,代码如下js:document.cookie = name + "=; expires=" + date.toGMTString() + "; path=/WebSite1/CookieDemo/";.net:Response.Cookies["userInfo"].Value = "UserInfo";Response.Cookies["userInfo"].Path = "/WebSite1/CookieDemo/";实际说了这么多就是为了解决一个很小的问题:js和.net后台共用一个Cookie。当然还有很多不懂的地方,这个Path只是Cookie的一个属性,还有一个【域】这个属性没有研究DEMO:
http://files.cnblogs.com/files/WarBlog/CookieDemo.rar