今天抽时间上网搜了一下关于cookie的知识,整理记录一下。
1.cookie是存储在客户端机器硬盘中的(相比较,session是存储在服务器端的内存中,可想而知更安全,但也会占用服务器资源),对其的管理是在浏览器中,这个我们可以用浏览器工具(F12)查看cookie信息。
2.cookie的使用场景:大多是用于记录用户一些基础信息,如用户名、密码,这样当用户下次登录这个网站时会发现用户名密码是已经填写好的(前提是第一次登录成功后弹出提示:是否记住用户信息、是否自动登录等,选择是),目的就是方便了用户对网站的浏览,节省用户时间。又比如,我们浏览购物网站的加入购物车功能,便是把商品信息记入了cookie,目的是一样的,都是方便用户对网站的访问,包括一些网站个性化信息等,都可以记录cookie。
3.使用限制:浏览器一般都是默认允许记录cookie的(当然,也可以设置网站屏蔽所有cookie),cookie记录信息量是有限的,一般为4k,而且大多数浏览器允许每个站点存储20个cookie,存储更多的话会导致较旧的cookie被覆盖。
4.由于cookie是存储在客户端的,所以敏感信息切记不要存cookie身份证号、信用卡等重要信息)。
5.可以通过Expires属性设置cookie失效时间,如果不设置失效时间,Cookie信息不会写到用户硬盘,浏览器关闭将会丢弃。
6.对cookie的操作:
①添加cookie:
1 HttpCookie cookie = new HttpCookie("MyCookie");//实例化一个名为"MyCookie"的cookie 2 cookie.Expires = DateTime.Now.AddMinutes(1);//设置cookie过期时间1分钟 3 4 //为MyCookie添加两个子键:userId,userId2,对应的值分别为:uservalue1,uservalue2 5 cookie.Values.Add("userId", "uservalue1"); 6 cookie.Values.Add("userId2", "uservalue2"); 7 //将一个http cookie添加到内部cookie集合 8 Response.AppendCookie(cookie); 9 //输出所有cookie值信息 10 Response.Write(cookie.Values);
1 ②读取cookie: 2 1 if (Request.Cookies["MyCookie"] != null) 3 2 { 4 3 Response.Write("MyCookie中键为userId的值为:" + Request.Cookies["MyCookie"]["userId"]); 5 4 Response.Write("MyCookie中键为userId2的值为:" + Request.Cookies["MyCookie"]["userId2"]); 6 5 Response.Write("MyCookie中所有内容:" + Request.Cookies["MyCookie"].Value); 7 6 }
1 ③修改cookie: 2 1 HttpCookie myCookie = Request.Cookies["MyCookie"]; 3 2 if (myCookie != null) 4 3 { 5 4 //修改cookie 6 5 myCookie.Values["userId"] = "new_uservalue1"; 7 6 8 7 //向cookie中添加新值 9 8 myCookie.Values.Set("newId", "add_uservalue"); 10 9 Response.AppendCookie(myCookie); 11 10 } 12 11 Response.Write("修改后MyCookie中所有内容:" + Request.Cookies["MyCookie"].Value);
1 ④删除cookie: 2 3 1 HttpCookie mycookie = Request.Cookies["MyCookie"]; 4 2 if (mycookie != null) 5 3 { 6 4 mycookie.Values.Remove("userId");//移除键为userId的值 7 5 Response.Write("修改后MyCookie中所有内容:" + Request.Cookies["MyCookie"].Value); 8 6 9 7 //移除所有cookie:设置cookie失效 10 8 mycookie.Expires = DateTime.Now.AddDays(-1); 11 9 //session过期后,需写入输出流,下次访问时此session才会真正失效(自己的理解) 12 10 Response.AppendCookie(mycookie); 13 11 if (mycookie != null) 14 12 { 15 13 Response.Write("cookie仍有效" + Request.Cookies["MyCookie"].Value); 16 14 } 17 15 else 18 16 { 19 17 Response.Write("cookie已被移除"); 20 18 }
}