ASP.NET Cookie

什么是Cookie?

Cookie是一小段文本信息,伴随着用户请求和页面在web服务器和浏览器之间传递,Cookie包含每次用户访问站点时web应用程序读可以读取信息
例如,如果在用户请求站点中的页面时应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie,用户的浏览器在获得页面的同时还获得了该 Cookie,并将它存储在用户硬盘上的某个文件夹中。
以后,如果该用户再次请求您站点中的页面,当该用户输入 URL 时,浏览器便会在本地硬盘上查找与该 URL 关联的 Cookie。如果该 Cookie 存在,浏览器便将该 Cookie 与页请求一起发送到您的站点。然后,应用程序便可以确定该用户上次访问站点的日期和时间。您可以使用这些信息向用户显示一条消息,也可以检查到期日期。
Cookie 与网站关联,而不是与特定的页面关联。因此,无论用户请求站点中的哪一个页面,浏览器和服务器都将交换 Cookie 信息。用户访问不同站点时,各个站点都可能会向用户的浏览器发送一个 Cookie;浏览器会分别存储所有 Cookie。
Cookie 帮助网站存储有关访问者的信息。一般来说,Cookie 是一种保持 Web 应用程序连续性(即执行状态管理)的方法。除短暂的实际交换信息的时间外,浏览器和 Web 服务器间都是断开连接的。对于用户向 Web 服务器发出的每个请求,Web 服务器都会单独处理。但是在很多情况下,Web 服务器在用户请求页时识别出用户会十分有用。例如,购物站点上的 Web 服务器跟踪每位购物者,这样站点就可以管理购物车和其他的用户特定信息。因此,Cookie 可以作为一种名片,提供相关的标识信息帮助应用程序确定如何继续执行。
使用 Cookie 能够达到多种目的,所有这些目的都是为了帮助网站记住用户。例如,一个实施民意测验的站点可以简单地将 Cookie 作为一个 Boolean 值,用它来指示用户的浏览器是否已参与了投票,这样用户便无法进行第二次投票。要求用户登录的站点则可以通过 Cookie 来记录用户已经登录,这样用户就不必每次都输入凭据。

Cookie如何存储

cookie的存储方式有两种,如果不指定过期时间,那么存储在客户端浏览器内存中;如果指定了过期时间,那么存储在客户端的磁盘上

Cookie的使用

            //创建cookie
            Response.Cookies["cp1"].Value = "itcast";
            //创建cookie并且指定过期时间
            Response.Cookies["cp2"].Value = "哈哈哈";
            Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(30);

            //删除cookie
            Response.Cookies["cp2"].Expires = DateTime.Now.AddSeconds(-1);

            //cookie跨域
            Response.Cookies["cp3"].Value = "哈哈哈";
            Response.Cookies["cp3"].Domain = "xxx.com";//设置主域

            //path属性
            Response.Cookies["cp4"].Path = "/Cookie";
            Response.Cookies["cp4"].Expires = DateTime.Now.AddDays(3);

            //获取cookie的值
            if (Request.Cookies["cp2"]!=null)
            {
                Response.Write(Request.Cookies["cp2"].Value);
            }


Cookie的限制

大多数浏览器支持最大为4096字节的cookie,有这限制了cookie的大小,最好用cookie来存储少量数据,或者存储用户ID 之列的标识符,用户IID随后便可用于标识用户,以及从数据库或者其他数据源中读取用户信息 浏览器还限制站点可以i在用户计算机上存储的cookie的数量,大多数浏览器只允许每个站点存储20个cookie;如果试图存储更多cookie便会被丢弃。有些浏览器还会对他们将接受的来自所有站点的cookie的总数做出绝对限制,通常为300个

Cookie与Session

有时我们会忽略Cookies与Session的关系。但是两者是密不可分的。
Session的唯一标示:SessionID是通常保存在Cookies中的(也可以保存在URL中)。对于Asp.Net而言,SessionID保存在键值为“ASP.NET_SessionId”的Cookies中,如图:


因为Cookies的存储数量是有限制的,所以我们的系统在保存Cookies的时候一定要注意防止冲掉这一个关键的Cookies。在下文介绍的最佳实践-以强对象方式保存Cookies的代码中特意对这个Cookies做了处理。
注意,在客户端使用javascript脚本无法获取“ASP.NET_SessionId”的Cookies, 因为此Cookies在服务器端设置了HttpOnly属性为true。
ASP.Net中HttpCookie对象的HttpOnly 属性 指定一个Cookie 是否可通过客户端脚本访问。不能通过客户端脚本访问为 true;否则为 false。默认值为 false。此属性并不能完全阻止客户端在本地获取cookies,但是可以增加通过脚本直接获取的难度。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值