Cookie学习笔记

Cookie机制解析

一、为什么会有cookie

        首先要明白Cookie是如何产生的,是服务器端生成能够标识用户的一串数据或文本,保存在客户端,再次访问时便会携带Cookie信息,方便进行用户认证或标识。

        从服务器端,发送cookie给客户端,是对应的Set-Cookie。包括了对应的cookie的名称,值,以及各个属性。从客户端发送cookie给服务器的时候,是不发送cookie的各个属性的,而只是发送对应的名称和值。

        除了服务器可以设置cookie值之外,还可以通过浏览器内置的一些脚本,比如javascript,去设置对应的cookie,对应实现是操作js中的document.cookie。

二、cookie的分类

        分为两种:会话cookie和持久cookie。会话cookie是仅在本次浏览器打开时有效,关闭浏览器,cookie便失效。持久cookie是有有效期的,过期了才会失效。

        区分这两种cookie的方法,如果设置了Discard参数或者没有设置Expires或者Max-Age来说明过期时间的,就是一个会话cookie。

三、cookie的属性

        1、cookie的域属性

        该属性主要是为了告诉浏览器将cookie发给哪个站点的,如果不设置这个属性,那么cookie不属于任一站点,浏览器可以将该cookie发给所有站点,每个站点都能获取到用户信息,这是有违设计初衷,并且会泄露用户信息的。

        但是,实际使用的时候,依然有web服务器的cookie机制的设计不够完善,比如如果a网站没有设计到该属性,就会出现以下现象,我访问完a网站保存了用户名和密码,或者发表了一篇博客时填写了标题titleXXX,在访问b网站时自动填充了我的用户名和密码,或者在提交文本时自动出现提示下拉框,内容是titleXXX。

        2、cookie的路径属性

        可以允许用户将cookie与一个站点的部分web站点关联起来,比如,如果设置了该属性,name只有在cookie中设定的路径下,才能够访问到该cookie,有效的进行了控制。

        3、过期之前如果修改了密码,cookie会有什么变化?(引用V2EE论坛上别人的观点)

        cookie里面放的是signature 也就是签名,但是这个签名是属于token机制的,它与时间戳等其他相关,修改完密码之后原来signiture就会失效,换成了新的token和新的signature。

        用户的信息确实要验证,但是现在的验证部分要通过比对,但是大部分的请求采用很快的的方法了,通过memcache类型的数据,在nginx端就直接将要验证的信息作为索引去取cache中的内容,但是如果用户关键信息变了的话,如果还是这样的请求,会将response状态转为重新登录,然后memcache中的该用户信息就会换为新的,你去试试微信,大象笔记,利用heartbeat保持session,如果用户的签名发生改变,就会让所有的heartbeat的客户端全部重新登录,cookie失效。

------------待更新--------------

转载于:https://my.oschina.net/u/3636678/blog/2874840

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值