解析 Cookie
標頭並使用以 Cookie 名稱作為鍵的物件填入 req.cookies
。您可選擇透過傳遞 secret
字串來啟用簽署的 Cookie 支援,這會指定 req.secret
,以便其他中介軟體使用。
$ npm install cookie-parser
var cookieParser = require('cookie-parser')
使用指定的 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
的結果。如果解析失敗,則原始值將保持不變。
將 cookie 值解析為 JSON cookie。如果為 JSON cookie,則會傳回已解析的 JSON 值,否則,將傳回傳遞的值。
針對物件,此物件會逐一迭代鍵,並對每個值呼叫 JSONCookie
,以解析的值取代原始值。此動作會傳回傳遞的相同物件。
將 Cookie 值解析為已簽署 Cookie。如果這是已簽署 Cookie 且簽章有效,這將傳回已解析的未簽署值。如果值未簽署,則傳回原始值。如果值已簽署但無法驗證簽章,則傳回 false
。
secret
參數可以是陣列或字串。如果提供字串,則使用此字串作為機密。如果提供陣列,則會嘗試使用每個機密來取消簽署 Cookie。
針對物件,這會反覆運算各個金鑰,並檢查任何值是否為已簽署 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"