黑人生命也是命。
支持平等正義倡議.

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 解析器中間件函數。

  • 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"

授權

MIT