深入了解Cookie

1.Cookie是什么

1.由于http是无状态的协议,一旦客户端和服务器的数据交换完毕,就会断开连接,再次请求,会重新连接,无法存储数据。
2.Cookie的出现是为了下次链接时,你之前存储了哪些数据。
3.其实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(1)
            });

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 才会发送到服务器。

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(1),
                Path = "/Test/",
            });
            return View();
        }

4.HttpOnly

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

 

原文地址:https://www.cnblogs.com/lgxlsm/p/8034161.html