cookie-parser 基于 NodeJS/ExpressJS 的 Cookie 解析器
解析 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 的签名。options
cookie.parse
作为第二个选项传递给的对象。有关更多信息,请参阅 cookie。decode
用于解码 cookie 值的函数
中间件将解析Cookie
请求的标头并将 cookie 数据公开为属性req.cookies
,如果secret
提供了,则公开为 property req.signedCookies
。这些属性是 cookie 名称到 cookie 值的名称值对。
如果secret
提供,该模块将unsign和验证任何已签名的cookie值和移动这些名称值对req.cookies
成req.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"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 利用 P3P 策略实现 http 跨域
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论