写点什么

node+express 操作 cookie

作者:木偶
  • 2022-10-21
    陕西
  • 本文字数:1117 字

    阅读完需:约 4 分钟

node+express操作cookie

Cookie:有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行 Session 跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。




用 node 操作 cookie 我们需要cookie-parser模块


npm i cookie-parser -s
复制代码


接下来在我们的文件中引入此模块


// 引入express模块const express = require('express')// 实例化expressconst app = express()// 操作cookie模块const cookieParser = require('cookie-parser');// 加入cookie签名app.use(cookieParser('真的好离谱')); //使用cookie中间件,加密值为:‘真的好离谱’
复制代码


参数详解


name: 一个唯一确定 cookie 的名称。value: 存储在 cookie 中字符串的值。domain: cookie 对于那个域下是有效的,path: 表示这个 cookie 影响到的路径,浏览器会根据这个配置,向指定的域中匹配的路径发送 cookie。expires: 失效时间,表示 cookie 何时失效的时间,如果不设置这个时间,浏览器就会在页面关闭时将删除所有的 cookie,不过我们也可以自己设置过期时间。注意:如果客户端和服务器端设置的时间不一致,使用 expires 就会存在偏差。max-age: 用来告诉浏览器此 cookie 多久过期(单位是秒),一般的情况下,max-age 的优先级高于 expires。HttpOnly: 告诉浏览器不允许通过脚本 document.cookie 去更改值,这个值在 document.cookie 中也是不可见的,但是在 http 请求会携带这个 cookie,注意:这个值虽然在脚本中使不可取的,但是在浏览器安装目录中是以文件形式存在的,这个设置一般在服务器端设置的。secure:安全标志,指定后,当 secure 为 true 时候,在 HTTP 中是无效的,在 HTTPS 中才有效,表示创建的 cookie 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以一般不会被且听到。


关于读取问题


  1. req.cookies:读取到的是我们未加密的 cookie;

  2. req.signedCookies:读取我们的加密 cookie。


案例


app.get('/', (req, res) => {    res.cookie('cart', { items: [1, 2, 3] }, { maxAge: 10000 * 2, httpOnly: true, signed: true, path: '/' });    res.cookie('user', '张三', { httpOnly: true, path: '/user', signed: true })    res.send('ok')    console.log(req.cookies)    console.log(req.signedCookies)})
复制代码




app.get('/user', (req, res) => {
console.log(req.cookies) res.send(req.signedCookies)})
复制代码



app.get('/news', function (req, res) {    res.cookie('Age', '大白', { maxAge: 10000 * 2, httpOnly: true, signed: true })    res.cookie('Age', '0', { maxAge: 0 }); //删除cookie    res.send('你好nodejs news')})
复制代码



maxAge0时会删除我们的cookie

发布于: 2022-10-21阅读数: 44
用户头像

木偶

关注

凭时间赢来的东西,时间肯定会为之作证 2022-10-21 加入

CSDN前端领域优质创作者,CSDN博客专家,擅长PC端以及Uniapp开发

评论

发布
暂无评论
node+express操作cookie_前端_木偶_InfoQ写作社区