cookie-parser 基于 NodeJS/ExpressJS 的 Cookie 解析器 - 文章教程

cookie-parser 基于 NodeJS/ExpressJS 的 Cookie 解析器

发布于 2021-08-19 字数 3292 浏览 935 评论 0

解析 Cookie 标头并填充 req.cookies 以 cookie 名称为键的对象。您可以选择通过传递一个 secret 字符串来启用签名 cookie 支持,该字符串分配 req.secret 以便其他中间件可以使用它。

安装

$ npm install cookie-parser

API

var cookieParser = require('cookie-parser')

cookieParser(secret, options)

使用给定的secret和 创建一个新的 cookie 解析器中间件函数options

  • secret用于签署 cookie 的字符串或数组。这是可选的,如果未指定,则不会解析签名的 cookie。如果提供了字符串,则将其用作秘密。如果提供了一个数组,则将尝试使用每个秘密按顺序取消对 cookie 的签名。
  • optionscookie.parse作为第二个选项传递给的对象。有关更多信息,请参阅 cookie
    • decode 用于解码 cookie 值的函数

中间件将解析Cookie请求的标头并将 cookie 数据公开为属性req.cookies,如果secret提供了,则公开为 property req.signedCookies。这些属性是 cookie 名称到 cookie 值的名称值对。

如果secret提供,该模块将unsign和验证任何已签名的cookie值和移动这些名称值对req.cookiesreq.signedCookies。签名 cookie 是一个值以 为前缀的 cookie s:。未通过签名验证的签名 cookie 将具有该值false而不是被篡改的值。

此外,该模块支持特殊的“JSON cookie”。这些是 cookie,其值以 为前缀j:。当遇到这些值时,该值将作为JSON.parse. 如果解析失败,原始值将保留。

cookieParser.JSONCookie(str)

将 cookie 值解析为 JSON cookie。如果它是一个 JSON cookie,这将返回解析的 JSON 值,否则,它将返回传递的值。

cookieParser.JSONCookies(cookies)

给定一个对象,这将遍历键并调用JSONCookie每个值,用解析后的值替换原始值。这将返回传入的相同对象。

cookieParser.signedCookie(str, secret)

将 cookie 值解析为签名 cookie。如果它是一个签名的 cookie 并且签名有效,这将返回解析的无符号值。如果该值未签名,则返回原始值。如果该值已签名但无法验证签名,false则返回。

所述secret参数可以是一个数组或字符串。如果提供了字符串,则将其用作秘密。如果提供了一个数组,则将尝试使用每个秘密按顺序取消对 cookie 的签名。

cookieParser.signedCookies(cookies, secret)

给定一个对象,这将遍历键并检查是否有任何值是签名的 cookie。如果是签名的 cookie 并且签名有效,则密钥将从对象中删除并添加到返回的新对象中。

所述secret参数可以是一个数组或字符串。如果提供了字符串,则将其用作秘密。如果提供了一个数组,则将尝试使用每个秘密按顺序取消对 cookie 的签名。

例子

var express = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser())

app.get('/', function (req, res) {
  // Cookies that have not been signed
  console.log('Cookies: ', req.cookies)

  // Cookies that have been signed
  console.log('Signed Cookies: ', req.signedCookies)
})

app.listen(8080)

// curl command that sends an HTTP request with two cookies
// curl http://127.0.0.1:8080 --cookie "Cho=Kim;Greet=Hello"

项目地址:https://github.com/expressjs/cookie-parser

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2512 文章
30 评论
82839 人气
更多

推荐作者

qianbiandeboy

文章 0 评论 0

少女净妖师

文章 2 评论 0

zangqw

文章 0 评论 0

qq_7HKsl

文章 0 评论 0

伪装你

文章 1 评论 0