ASP.NET状态管理之 Cookie
Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。
本主题包括:编写cookie 、读取cookie、删除cookie。
cookie提供了一种在Web应用程序中存储用户特定信息 的方法。例如用户访问您的站点的时候,您可以使用cookie存储用户信息。当影虎再次访问的时候,应用程序便可以检索以前存储的信息了。
在用户请求页面的同时,服务器不仅把页面反送给客户,而且还可能设置一些cookie到客户端,用户在获得页面的同时也获得了cookie,并保存的硬盘上。以后用户再次访问站点时浏览器便会把硬盘上与该URL关联的不过期的cookie发送到服务器。然后服务器便可以获得用户的上次登录的信息来初始化一个特定于您 的页面。
Cookie中的内容大多数经过了加密处理,也有不加密的情况,在我们看来加密处理的cookie只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie. 内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie.
cookie是和站点关联 的,而不是和特定的页面。viewstate是和特定的页面关联的。无论用户请求的是站点的哪个页面,浏览器发送请求的时候都会带上和站点有关的cookie。用户访问不同的的站点时,各个站点都可能会设置一些cookie,浏览器会分别存储所有cookie。
Cookie的种类
1. Session Cookie这个类型的cookie只在会话期间内有效,即当关闭浏览器时就会被浏览器删除。设置session cookie的办法是:在创建cookie不设置Expires即可。
2. Persistent Cookie持久型cookie顾名思义就是会长期在用户会话中生效。当你设置cookie的属性Max-Age为1个月的话,那么在这个月里每个相关URL的http请求中都会带有这个cookie.所以它可以记录很多用户初始化或自定义化的信息,比如什么时候第一次登录及弱登录态等
3. Secure cookie安全cookie是在https访问下的cookie形态,以确保cookie在从客户端传递到Server的过程中始终加密的。这样做大大的降低的cookie内容直接暴露在黑客面前及被盗取的概率。
4. HttpOnly Cookie
设置成httponly的cookie只能在http(https)请求上传递。也就是说httponly cookie对客户端脚本语言(javascript)无效,从而避免了跨站攻击时JS偷取cookie的情况。当你使用javascript在设置同样名字的cookie时,只有原来的httponly值会传送到服务器。(document.cookie 无效)
5. 第三方cookie
则是种植在不同于浏览器地址栏的域名下。例如:用户访问a.com时,在ad.google.com设置了个cookie.广告。
6. Super Cookie超级cookie是设置公共域名前缀上的cookie.通常a.b.com的cookie可以设置在a.b.com和b.com,而不允许设置在。com上。
7. Zombie Cookie僵尸cookie是指那些删不掉的,删掉会自动重建的cookie.僵尸cookie是依赖于其他的本地存储方法,例如flash的share object,html5的local storages等,当用户删除cookie后,自动从其他本地存储里读取出cookie的备份,并重新种植。
cookie的限制:大多数的浏览器限制cookie的数量,用户也可以设置浏览器拒绝接受cookie,还可以删除它。如果应用程序必须依赖于 Cookie,则可以通过测试确定浏览器是否将接受 Cookie。。但是,如果用户已在浏览器上禁用 Cookie,信息便无法存储在 Cookie 中。
浙公网安备 33010602011771号