1 、Cookie 简介
- cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据,实现数据的持久化。
- HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。
- cookie可以设置多个。
2 、设置cookie的值
第三个参数options,用来配置cookie的一些参数
注意:cookie默认不能设置中文,如果cookie加密以后就可以把cookie设置为中文
this.ctx.cookies.set(key, value, options)
3、获取cookie
this.ctx.cookies.get(key, options) //通过key来获取cookie
4、清除cookie
通过cookie的key把值设置为null,或者设置 maxAge 过期时间为 0 即可
this.ctx.cookies.set(key,null)
5、options的常用配置
{Number} maxAge
: 设置这个键值对在浏览器的最长保存时间。是一个从服务器当前时刻开始的毫秒数。{Boolean} httpOnly
: 默认为 true,设置键值对是否可以被后台访问,不允许被客服端访问。{Boolean} signed
:默认为 true,对cookie签名,可以防止前端对这个值进行篡改。{Boolean} encrypt
:默认为 false,设置是否对 Cookie 进行加密,value不会在客户端明文显示,如果设置了加密,那么获取时需要进行解密,设置第二个参数encrypt:true
6、设置中文 cookie,另一种解决办法
console.log(new Buffer('hello, world!').toString('base64'));
// 转换成 base64 字符串:aGVsbG8sIHdvcmxkIQ==
console.log(new Buffer('aGVsbG8sIHdvcmxkIQ==', 'base64').toString());
// 还原 base64 字符串:hello, world!
7、cookie详细解读查看eggjs官方文档