4. cookie
1. 简介
- http是无状态协议。也就是服务器无法识别各个请求是否来自于同一个用户浏览器
- Cookie是存储于访问者计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据
- 服务器在下行http报文中,命令浏览器存储一个字符串,浏览器再访问
同一个域
的时候,把这个字符串携带到http请求中。
2. 使用cookie
- express中需要用到cookie-parser模块
- 在Application/Cookies中可以查看到,所以一般需要加密
- cookie第三个参数 path
const cookieParser = require('cookie-parser')
// 设置中间件
app.use(cookieParser())
app.use((req, res, next => {
// 设置cookie
res.cookie('name', 'zhangsan', {maxAge: 900000, httpOnly: true})
// 获取cookie
const { name } = req.cookies
})
3. 参数讲解
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加密协议有效
// 配置cookie加密
// 1. 配置cookie中间件的时候传入加密参数
app.use(cookieParser('gin'))
// 2. 正常设置cookie
res.cookie('username', 'zhangsan', {maxAge: 10000})
// 3. 获取加密的cooie
req.signedCookies