nodejs学习笔记20-koa中使用Cookie

490 阅读2分钟

cookie的常用作用

1、保存用户信息
2、浏览器历史记录
3、猜你喜欢的功能
4、10天免登陆
5、多个页面之间的数据传递
6、cookie实现购物车功能

设置Cookie

ctx.cookies.set(name, value, [options])


** options可选参数 **
  • maxAge: 一个数字, 表示从 Date.now() 得到的毫秒数.
  • expires: 一个 Date 对象, 表示 cookie 的到期日期 (默认情况下在会话结束时过期).
  • path: 一个字符串, 表示 cookie 的路径 (默认是/).
  • domain: 一个字符串, 指示 cookie 的域 (无默认值).
  • secure: 一个布尔值, 表示 cookie 是否仅通过 HTTPS 发送 (HTTP 下默认为 false, HTTPS 下默认为 true). 阅读有关此参数的更多信息.
  • httpOnly: 一个布尔值, 表示 cookie 是否仅通过 HTTP(S) 发送,, 且不提供给客户端 JavaScript (默认为 true).
  • sameSite: 一个布尔值或字符串, 表示该 cookie 是否为 "相同站点" cookie (默认为 false). 可以设置为 'strict''lax''none', 或 true (映射为 'strict').
  • signed: 一个布尔值, 表示是否要对 cookie 进行签名 (默认为 false). 如果为 true, 则还会发送另一个后缀为 .sig 的同名 cookie, 使用一个 27-byte url-safe base64 SHA1 值来表示针对第一个 Keygrip 键的 cookie-name=cookie-value 的哈希值. 此签名密钥用于检测下次接收 cookie 时的篡改.
  • overwrite: 一个布尔值, 表示是否覆盖以前设置的同名的 cookie (默认是 false). 如果是 true, 在同一个请求中设置相同名称的所有 Cookie(无论路径或域)是否在设置此Cookie 时从 Set-Cookie 消息头中过滤掉.

获取Cookie

ctx.cookies.get('name');

设置中文Cookie

console.log(new Buffer('hello, world!').toString('base64'));// 转换成 base64 字符串:aGVsbG8sIHdvcmxkIQ==

console.log(new Buffer('aGVsbG8sIHdvcmxkIQ==', 'base64').toString());// 还原 base64 字符串:hello, world!