注意

此页面根据 cookie-parser README 生成。

cookie-parser

NPM Version NPM Downloads Build Status Test Coverage

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

安装

$ npm install cookie-parser

API

var cookieParser = require('cookie-parser')

cookieParser(secret, options)

使用给定的 secretoptions 创建一个新的 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"

许可证

MIT