深入了解Cookie

1.Cookie是什么

1.由于http是无状态的协议,一旦客户端和服务器的数据交换完毕,就会断开连接,再次请求,会重新连接,无法存储数据。
2.Cookie的出现是为了下次链接时,你之前存储了哪些数据。
3.其实Cookie是一个很小的文本文件,是浏览器储存在用户的机器上的。Cookie是纯文本,没有可执行代码。
储存一些服务器需要的信息,每次请求站点,会发送相应的cookie到服务端。

深入了解Cookie

2.cookie生命周期

1.会话cookie:用户退出浏览器,会话Cookie就会被删除了
2.持久cookie:则会储存在硬盘里,保留时间更长,关闭浏览器,重启电脑,它依然存在。当时间大于Expires的时间,才会消失。

            //会话cookie
Response.Cookies.Add(new HttpCookie("name")
{
Value = "wolf"
});
//持久cookie
Response.Cookies.Add(new HttpCookie("name1")
{
Value = "wolf",
Expires = DateTime.Now.AddHours()
});

3.cookie属性

1.Secure
secure属性用来指定Cookie只能在加密协议HTTPS下发送到服务器。但是这并不表示100%安全。
2.Domain

domain属性指定 Cookie 所在的域名,比如example.com或.example.com(这种写法将对所有子域名生效)、subdomain.example.com。
如果未指定,默认为设定该Cookie的域名。所指定的域名必须是当前发送Cookie的域名的一部分,比如当前访问的域名是example.com,就不能将其设为google.com。
只有访问的域名匹配 domain 属性,Cookie 才会发送到服务器。

深入了解Cookie

深入了解Cookie

3.Path

path属性用来指定路径,必须是绝对路径(比如/、/mydir),如果未指定,默认为请求该 Cookie 的网页路径。
只有path属性匹配向服务器发送的路径,Cookie 才会发送。这里的匹配不是绝对匹配,而是从根路径开始,
只要path属性匹配发送路径的一部分,就可以发送。比如,path属性等于/blog,则发送路径是/blog或者/blog/roll,Cookie都会发送。
path属性生效的前提是domain属性匹配。

        public ActionResult EFTest()
{
//http://localhost:55924/Test/eftest 可以访问
//http://localhost:55924/ 无法访问
Response.Cookies.Add(new HttpCookie("name1")
{
Value = "wolf",
Expires = DateTime.Now.AddHours(),
Path = "/Test/",
});
return View();
}

4.HttpOnly

HttpOnly属性用于设置该Cookie不能被JavaScript读取

上一篇:前端PS切图


下一篇:js基础细节