4. cookie

1. 简介

  • http是无状态协议。也就是服务器无法识别各个请求是否来自于同一个用户浏览器
  • Cookie是存储于访问者计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据
  • 服务器在下行http报文中,命令浏览器存储一个字符串,浏览器再访问同一个域 的时候,把这个字符串携带到http请求中。

2. 使用cookie

  • express中需要用到cookie-parser模块
  • 在Application/Cookies中可以查看到,所以一般需要加密
  • cookie第三个参数 path
  1. const cookieParser = require('cookie-parser')
  2. // 设置中间件
  3. app.use(cookieParser())
  4. app.use((req, res, next => {
  5. // 设置cookie
  6. res.cookie('name', 'zhangsan', {maxAge: 900000, httpOnly: true})
  7. // 获取cookie
  8. const { name } = req.cookies
  9. })

3. 参数讲解

  1. res.cookie('name', 'value', optionObj)

第三个参数optionObj的一些字段说明

  • path: 指定哪些路由可以访问cookie
  • httpOnly: 设置后仅可在node.js中操作cookie
  • maxAge: cookie失效时间。是一个倒计时
  • expires:过期时间。是设置某个时间点,在那之后就失效了
  • domain: 设置后,同一个域的二级域名(如a.xx.com和b.xx.com)可以相互访问cookie。需要设置为{domain: '.xx.com'}
  • signed: 签名,即加密。需要额外配置
  • secure: 仅https加密协议有效
  1. // 配置cookie加密
  2. // 1. 配置cookie中间件的时候传入加密参数
  3. app.use(cookieParser('gin'))
  4. // 2. 正常设置cookie
  5. res.cookie('username', 'zhangsan', {maxAge: 10000})
  6. // 3. 获取加密的cooie
  7. req.signedCookies