最基本的行为:实现本地存储。
分为session cookie(临时cookie,只在本次打开页面存在,关闭页面后删除)以及permanent cookie(持久cookie,设置了过期时间)
属性
domin: 域名
expires: 过期时间(绝对时间,兼容没问题,比较常用,值为session时代表时临时cookie)
Max-Age: 距离过期的秒数(有兼容性问题,ie8以下不能用)
path:路径
Secure: 只有在https下才发送
httpOnly:不能通过js的document.cookie访问
name
value
里面的sameSite属性是谷歌浏览器独有的,用处是防御xsrf
cookie 虽然可以储存本地信息,但是不适合储存大量的信息,因为 cookie 还有个特点是每次请求都会带上这个域相关的所有 cookie,就是说,cookie 会影响浏览器请求的大小,因此我们要尽量保持 cookie 体积小,还有尽量用于保存跟用户相关的信息。同时,浏览器本身对 cookie 总大小也有限制,目前是不允许超过 4k,超过的会丢失
js操作cookie:
通过document.cookie获取,
增加:增加cookie的方式如下,这个方式看上去像直接赋值,但其实只是多加了一条cookie,不会覆盖原来的cookie。注意设置cookie的domain只能设置上级域名,不能跨域,否则设置不生效,path一般设为根目录‘/’,有特殊场景可以设置为具体子目录。
document.cookie = encodeURIComponent('user') + '=' + encodeURIComponent('111') + 'domain=上级域名'
删除:直接在该cookie上设置exipires=‘过期时间’,例如
document.cookie = encodeURIComponent('user') + '=' + encodeURIComponent('111') + 'expires=' + new Date(0)
使用cookie保存用户信息
用户登录后服务器会通过set-cookie响应头返回用户id这些信息,浏览器收到后会把这些信息设置到cookie里,这样后面再发请求会把这些cookie带上,于是服务器就能区分该用户。