5. cookie/session - 5.1 koa2使用cookie

优质
小牛编辑
128浏览
2023-12-01

使用方法

koa提供了从上下文直接读取、写入cookie的方法

  • ctx.cookies.get(name, [options]) 读取上下文请求中的cookie
  • ctx.cookies.set(name, value, [options]) 在上下文中写入cookie

koa2 中操作的cookies是使用了npm的cookies模块,源码在https://github.com/pillarjs/cookies,所以在读写cookie的使用参数与该模块的使用一致。

例子代码

  1. const Koa = require('koa')
  2. const app = new Koa()
  3. app.use( async ( ctx ) => {
  4. if ( ctx.url === '/index' ) {
  5. ctx.cookies.set(
  6. 'cid',
  7. 'hello world',
  8. {
  9. domain: 'localhost', // 写cookie所在的域名
  10. path: '/index', // 写cookie所在的路径
  11. maxAge: 10 * 60 * 1000, // cookie有效时长
  12. expires: new Date('2017-02-15'), // cookie失效时间
  13. httpOnly: false, // 是否只用于http请求中获取
  14. overwrite: false // 是否允许重写
  15. }
  16. )
  17. ctx.body = 'cookie is ok'
  18. } else {
  19. ctx.body = 'hello world'
  20. }
  21. })
  22. app.listen(3000, () => {
  23. console.log('[demo] cookie is starting at port 3000')
  24. })

运行例子

执行脚本

  1. node index.js

运行结果

访问http://localhost:3000/index

  • 可以在控制台的cookie列表中中看到写在页面上的cookie
  • 在控制台的console中使用document.cookie可以打印出在页面的所有cookie(需要是httpOnly设置false才能显示)

cookie-result-01