谈谈cookies可以设置的属性

214 阅读3分钟

最近在面试中遇到这样一个题目:你能说说cookies1可以设置哪些属性吗?分别有什么作用?

好家伙这一问就把我问懵逼了,cookie在我的印象中就是为了弥补http无状态的特性的前端存储。从平时的项目实践中我知道可以设置和获取,但是要说它可以设置啥属性我印象中好像有个doman。看来是要趁现在好好整理一下这个混乱的知识了!

什么是cookie

cookie是存储在客户端的一小块内存变量,大小约为4kb,每当同一台机子访问某个域下的网页时,就是携带着这个cookie用来保存一些必要的状态,使得http变成有状态的感觉。

cookie有什么属性

属性解释
name顾名思义这个就是设置cookie的名字,cookie一旦创建了,名称变不能再进行更改
value顾名思义这个就是设置cookie的值,对于不同类型的值有不同的处理方式:Unicode编码的需要为字符编码;二进制数据的要进行base64编码
maxAge这个就和缓存的max-age很像都是设置失效时间,cookie是不能直接删除的,所以可以通过失效时间来模拟删除的效果,具体设置效果:若果为整数,那么cookie就会在maxAge秒后失效,如果为负数那么就是一个临时的cookie,我们只需要关闭浏览器就是使得它失效;如果为0就是表示删除
secure该值是一个bool值表示是否仅仅在使用安全传输协议的时候才携带,默认为false
pathcookies的使用路径,设置cookie在什么路径下可以使用,需要注意最后一个字符必须为'.'
doman设置什么域名才可以访问该cookie如.baidu.com则所以以.baidu.com结尾的域名都可以访问该cookie,需要注意的是第一个字符必须是'.'
comment对该cookie的描述,浏览器会显示他的说明
version使用的版本号,对应存在不同的规范

学了有啥用

对于实用主义学习一个东西必须搞懂它的用途。首先知道了这些,我们就可以方便的操控cookie了,它所维护的状态更多的时候用于登录的校验,那么就可以运用到登陆中,如常见的单点登录是怎么实现的呢?用的就是这里的doman属性,我也是看了一篇如何实现单点登录的文章才依稀记得有doman这个属性的,所谓的单点登录其实就是让用户只要登录一次就可以访问该公司的多个网站,那么我们只要设置cookie在它公司的域名下都可以被正常访问那么这个cookie维护着这个用户的登录状态,我们就实现了单点登录的效果。