注意
此页面根据 cookie-parser README 生成。cookie-parser
解析 Cookie
头并用一个以 cookie 名称为键的对象填充 req.cookies
。您也可以选择通过传递一个 secret
字符串来启用签名 cookie 支持,这会将 req.secret
赋值,以便其他中间件可以使用它。
安装
$ npm install cookie-parser
API
var cookieParser = require('cookie-parser')
cookieParser(secret, options)
使用给定的 secret
和 options
创建一个新的 cookie 解析器中间件函数。
secret
用于签名 cookie 的字符串或数组。这是可选的,如果未指定,则不会解析签名 cookie。如果提供字符串,则将其用作密钥。如果提供数组,将按顺序尝试使用每个密钥来解签 cookie。options
一个作为第二个选项传递给cookie.parse
的对象。有关更多信息,请参阅 cookie。decode
一个用于解码 cookie 值的函数
该中间件将解析请求中的 Cookie
头,并将 cookie 数据公开为属性 req.cookies
;如果提供了 secret
,则将其公开为属性 req.signedCookies
。这些属性是 cookie 名称到 cookie 值的键值对。
当提供了 secret
时,此模块将解签并验证任何签名 cookie 值,并将这些键值对从 req.cookies
移动到 req.signedCookies
中。签名 cookie 是一个值以 s:
为前缀的 cookie。签名验证失败的签名 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"