1.cookie是客户端(浏览器端)的状态保持,是键值对的字符串,可以将网页上的一些数据存放在客户端里,同一个设备,下一次再次get请求浏览该网页的时候,浏览器会将cookie,放在响应体中返回给浏览器。如果是表单提交,那么会将cookie放在请求报文当中发送给服务器。
2.cookie如果不设置过期时间,那么会将cookie存放在浏览器的内存当中,下一次访问就没了。设置了时间,cookie就会存放在磁盘当中,超过设置的规定时间,自动清除cookie。
3.通常cookie的使用场景比如网站10天内免登陆,购物网站游客身份访问能够记住用户浏览等。
4.有一些网站没有做cookie,但是浏览器会提示用户是否保存账号密码,也是cookie的应用。
5.安全性,即使经过加密,cookie还是不够安全,所以对于自动登录功能也要考虑安全性。
一:写入cookie
举个例子:当用户第一次登录时,如果登录成功,就可以创建cookie放在客户端。
//创建cookie 方式一 Response.Cookies["userName"].Value = userName; Response.Cookies["userPassword"].Value = userPassword; Response.Cookies["userName"].Expires = DateTime.Now.AddDays(3); Response.Cookies["userPassword"].Expires = DateTime.Now.AddDays(3); //创建cookie 方式二 HttpCookie cookie = new HttpCookie("userName"); cookie.Value = userName; Response.Cookies.Add(cookie);
二:读取cookie
当再一次访问该网页时,浏览器会将cookie,上传给服务器。
//代码中的例子是用mvc来做的
if (Request.Cookies["userName"]!=null && Request.Cookies["userPassword"]!= null) { ViewData["userName"] = Request.Cookies["userName"].Value; ViewData["userPassword"] = Request.Cookies["userPassword"].Value; }
三:清理cookie
删除cookie的思路非常简单只要将器过期时间设置为任意一个过去时间即可。
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(-1);
其中的AddDays()当中的参数-1 -2 都行,只要是过去的时间就行。
四:解决cookie中文乱码问题
Response.Cookies["userName"].Value = Server.UrlEncode(userName);
ViewData["userName"] = Server.UrlDecode(Request.Cookies["userName"].Value);
将cookie的value值编码,读取的时候重新解码。
-----------------some words--------------------
1.cookie 饼干
2.expire 期满( expire的第三人称单数 ); 文件、协议等(因到期而)失效; 断气; 逝世;
-------------------the end---------------------