博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cookie学习笔记
阅读量:7062 次
发布时间:2019-06-28

本文共 1321 字,大约阅读时间需要 4 分钟。

hot3.png

一、为什么会有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

你可能感兴趣的文章
155. Min Stack
查看>>
Android深度探索(卷1)HAL与驱动开发学习笔记(5)
查看>>
JavaScript高级
查看>>
静态成员函数访问构造函数
查看>>
scla-基础-函数-元组(0)
查看>>
How to Convert a Single-Instance ASM to Cluster ASM [ID 452758.1]
查看>>
触发a标签
查看>>
所有Windows7下游戏的全屏问题
查看>>
UIImage转换成UIView
查看>>
一种专门用于前后端分离的web服务器(JerryServer)
查看>>
Java连接访问Oracle--Connection.setSavepoint()方法使用
查看>>
LeetCode OJ:Maximal Square(最大矩形)
查看>>
抽象工厂 C++实现
查看>>
[KMP]字符串匹配算法
查看>>
[转] 随机数是骗人的,.Net、Java、C为我作证
查看>>
第一天
查看>>
VUE基础插值表达式
查看>>
如何在mysql客户端即mysql提示符下执行操作系统命令
查看>>
人月神话读后感
查看>>
Learning Agile software Development
查看>>