Expressjs-cookies

提供:Dev Guides
移動先:案内検索

ExpressJS-クッキー

Cookieは、サーバー要求でクライアントに送信され、クライアント側に保存される単純な小さなファイル/データです。 ユーザーがWebサイトをロードするたびに、このCookieがリクエストとともに送信されます。 これにより、ユーザーのアクションを追跡できます。

以下は、HTTP Cookieの多数の用途です-

  • セッション管理
  • パーソナライゼーション(推奨システム)
  • ユーザー追跡

ExpressでCookieを使用するには、Cookieパーサーミドルウェアが必要です。 それをインストールするには、次のコードを使用します-

npm install --save cookie-parser

ExpressでCookieを使用するには、 cookie-parser が必要です。 cookie-parserは、_クライアントリクエストオブジェクトに添付されたCookieを解析するミドルウェアです。 これを使用するには、 index.js ファイルで必要になります。これは、他のミドルウェアを使用するのと同じ方法で使用できます。 ここでは、次のコードを使用します。

var cookieParser = require('cookie-parser');
app.use(cookieParser());

cookie-parserはCookieヘッダーを解析し、 req.cookies にCookie名をキーとするオブジェクトを設定します。 新しいCookieを設定するには、Expressアプリで次のような新しいルートを定義します。

var express = require('express');
var app = express();

app.get('/', function(req, res){
   res.cookie('name', 'express').send('cookie set');//Sets name = express
});

app.listen(3000);

Cookieが設定されているかどうかを確認するには、ブラウザに移動してコンソールを起動し、入力します-

console.log(document.cookie);

次のような出力が得られます(おそらく、ブラウザの拡張機能により、さらに多くのCookieが設定されている可能性があります)-

"name = express"

また、ブラウザーはサーバーに照会するたびにCookieを送り返します。 サーバーのCookieを表示するには、ルートのサーバーコンソールで、そのルートに次のコードを追加します。

console.log('Cookies: ', req.cookies);

次回このルートにリクエストを送信すると、次の出力が表示されます。

Cookies: { name: 'express' }

有効期限付きのCookieの追加

期限切れのCookieを追加できます。 期限切れのCookieを追加するには、プロパティ「expire」が設定されたオブジェクトを期限切れにしたい時間に渡します。 例えば、

//Expires after 360000 ms from the time it is set.
res.cookie(name, 'value', {expire: 360000 + Date.now()});

有効期限を設定する別の方法は、 'maxAge' プロパティを使用することです。 このプロパティを使用して、絶対時間ではなく相対時間を提供できます。 以下は、このメソッドの例です。

//This cookie also expires after 360000 ms from the time it is set.
res.cookie(name, 'value', {maxAge: 360000});

既存のCookieを削除する

Cookieを削除するには、clearCookie関数を使用します。 たとえば、 foo という名前のCookieをクリアする必要がある場合は、次のコードを使用します。

var express = require('express');
var app = express();

app.get('/clear_cookie_foo', function(req, res){
   res.clearCookie('foo');
   res.send('cookie foo cleared');
});

app.listen(3000);

次の章では、Cookieを使用してセッションを管理する方法について説明します。