cookie-parser

NPM Version NPM Downloads Build Status Test Coverage

Cookie ヘッダーを解析し、クッキー名でキー付けされたオブジェクトで req.cookies を設定します。オプションで、secret 文字列を渡すことで署名付きクッキーのサポートを有効にできます。これにより、req.secret が割り当てられ、他のミドルウェアで使用できるようになります。

インストール

$ npm install cookie-parser

API

var cookieParser = require('cookie-parser')

cookieParser(secret, options)

指定された secretoptions を使用して、新しいクッキーパーサーミドルウェア関数を作成します。

  • secret クッキーへの署名に使用される文字列または配列。これはオプションであり、指定しない場合は、署名付きクッキーを解析しません。文字列が指定された場合、これはシークレットとして使用されます。配列が指定された場合、順番に各シークレットを使用してクッキーの署名解除が試行されます。
  • options 2番目のオプションとして cookie.parse に渡されるオブジェクト。詳細については、cookie を参照してください。
    • decode クッキーの値をデコードする関数

ミドルウェアはリクエストの Cookie ヘッダーを解析し、クッキーデータをプロパティ req.cookies として、secret が指定された場合はプロパティ req.signedCookies として公開します。これらのプロパティは、クッキー名からクッキー値への名前と値のペアです。

secret が指定されている場合、このモジュールは署名されたクッキー値を署名解除して検証し、それらの名前と値のペアを req.cookies から req.signedCookies に移動します。署名されたクッキーは、値の先頭に s: が付いたクッキーです。署名検証に失敗した署名付きクッキーの値は、改ざんされた値ではなく false になります。

さらに、このモジュールは特別な「JSON クッキー」をサポートしています。これらは、値の先頭に j: が付いたクッキーです。これらの値が検出されると、値は JSON.parse の結果として公開されます。解析に失敗した場合、元の値が残ります。

cookieParser.JSONCookie(str)

クッキー値を JSON クッキーとして解析します。これが JSON クッキーだった場合は、解析された JSON 値を返します。それ以外の場合は、渡された値を返します。

cookieParser.JSONCookies(cookies)

オブジェクトが与えられた場合、これはキーを反復処理し、各値に対して JSONCookie を呼び出し、元の値を解析された値で置き換えます。これは、渡されたものと同じオブジェクトを返します。

cookieParser.signedCookie(str, secret)

クッキー値を署名付きクッキーとして解析します。これが署名付きクッキーであり、署名が有効であった場合は、解析された署名なしの値を返します。値が署名されていない場合は、元の値が返されます。値が署名されているが、署名を検証できなかった場合は、false が返されます。

secret 引数は、配列または文字列にできます。文字列が指定された場合、これはシークレットとして使用されます。配列が指定された場合、順番に各シークレットを使用してクッキーの署名解除が試行されます。

cookieParser.signedCookies(cookies, secret)

オブジェクトが与えられた場合、これはキーを反復処理し、値が署名付きクッキーかどうかを確認します。署名付きクッキーであり、署名が有効な場合は、キーがオブジェクトから削除され、返される新しいオブジェクトに追加されます。

secret 引数は、配列または文字列にできます。文字列が指定された場合、これはシークレットとして使用されます。配列が指定された場合、順番に各シークレットを使用してクッキーの署名解除が試行されます。

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