Cookie

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---------------------

posted @ 2018-02-27 14:49  5只猫  阅读(240)  评论(0编辑  收藏  举报