什么是Cookie
Cookie就是一个文本文件,它是客户端的一种状态保持机制 ,里面存储了一些少量的关于用户的信息,比如:用户名和密码、浏览过的商品编号等。它既可以存在浏览器的内存中,也可以存在用户电脑的硬盘上。如果不指定存储时长,Cookie就存在浏览器的内存中;指定了Cookie的存储时长,它就会存在用户电脑的硬盘上,等过了这个有效期限,它就会自动删除。
Cookie的基本操作
1. Cookie的创建
Cookie的创建有两种方式:
//第一种创建方式:
Response.Cookies["cp1"].Value = "1";
//第二种创建方式:
HttpCookie httpCookie = new HttpCookie("cp1", "1");
httpCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(httpCookie);
2. 指定Cookie的过期时间
//指定过期时间为3天
Response.Cookies["cp1"].Expires = DateTime.Now.AddDays(3);
3. 删除Cookie
只要将Cookie的有效期限改为一个过去的时间,Cookie就会被删除
//删除Cookie
Response.Cookies["cp1"].Expires = DateTime.Now.AddDays(-1);
4. Cookie的跨域
Cookie的跨域就是指:默认在主域名创建的Cookie,访问子域名的时候,也会自动将Cookie加入到报文中;但是在子域名创建的Cookie,由子域名跳转到主域名却不会将Cookie加入到报文中。如果想实现后者的话,也可以用代码实现,只需要指定cookie的一个属性就可以了:
Response.Cookies["cp1"].Domain = "zhuyuming";
5. 指定Cookie的作用范围
有时候我们想控制只有访问特定文件夹下的网页时,才会发送Cookie,那么就可以指定Cookie的Path属性。如果不指定,那么Cookie的作用范围是整个网站。
Response.Cookies["cp1"].Path = "/2019-2-13";
Cookie说明
1. Cookie的限制
大多数浏览器允许存储的Cookie最大为4KB,所以只能用Cookie存储少量数据。
大多数浏览器允许每个站点最多存20个Cookie,如果超出20个,新的Cookie将会替代旧Cookie
有些浏览器限制所有站点的Cookie总数为300个
为了解决浏览器对Cookie数量的限制,所以有了多值Cookie,如果没有多值Cookie,那么每个站点只能存20条数据。
//多值Cookie
//第一种创建方式
Response.Cookies["userInfo"]["userName"] = "zhangweijie";
Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(3);
//第一种接收方式
string userName = Request.Cookies["userInfo"]["userName"];
//多值Cookie第二种创建方式
HttpCookie cookie = new HttpCookie("userInfo");
cookie.Values["userName"] = "zhangweijie";
cookie.Values["lastVisit"] = DateTime.Now.ToString();
Response.Cookies.Add(cookie);
//多值Cookie第二种接收方式
HttpCookie httpCookie1 = Request.Cookies["userInfo"];
string userName = httpCookie1.Values["userName"];
2. Cookie的安全
由于Cookie存在用户的电脑上,所以Cookie是不安全的,如果要在Cookie中存用户的登录密码等敏感信息时一定要加密。