JavaScript、Node.js、Cookieで作る:HTTPサーバーでCookieの取得・設定
Node.js HTTPサーバーで単一のCookieを取得・設定する方法
このチュートリアルでは、Node.js HTTPサーバーで単一のCookieを取得および設定する方法について説明します。Cookieは、クライアントとサーバー間でデータを保存するために使用される小さなテキストファイルです。ログイン状態やユーザー設定を追跡するなど、さまざまな目的に使用できます。
必要なもの
このチュートリアルを完了するには、以下のものが必要です。
- Node.jsがインストールされているコンピューター
- テキストエディタ
手順
プロジェクトを作成する
npm init -y
必要なパッケージをインストールする
npm install http
サーバーを作成する
次のコードは、単一のCookieを取得および設定するHTTPサーバーを作成します。
const http = require('http'); const server = http.createServer((req, res) => { // Cookieを取得する const cookie = req.headers.cookie; if (cookie) { console.log('Cookie:', cookie); } // Cookieを設定する res.setHeader('Set-Cookie', 'myCookie=value'); res.end('Hello World!'); }); server.listen(3000, () => { console.log('Server listening on port 3000'); });
このコードは、次のことを行います。
http
モジュールをインポートします。http.createServer
を使用して新しいHTTPサーバーを作成します。req
オブジェクトには、クライアントからのリクエストに関する情報が含まれています。req.headers.cookie
を使用して、クライアントからのCookieを取得します。res.setHeader('Set-Cookie', 'name=value')
を使用して、クライアントにCookieを設定します。res.end()
を使用して、クライアントにレスポンスを送信します。server.listen(3000)
を使用して、サーバーをポート3000で起動します。
次のコマンドを実行して、サーバーを実行します。
node index.js
ブラウザを開き、
http://localhost:3000
にアクセスします。コンソールに次の出力が表示されます。Cookie: myCookie=value
これは、サーバーがクライアントから
myCookie
という名前のCookieを取得し、値がvalue
であることを示しています。
補足
- Cookieの名前と値は、自由に設定できます。
- Cookieの有効期限を設定することもできます。
- Cookieは、HTTPのみに対応しています。HTTPSを使用する場合は、HTTPS Cookieを使用する必要があります。
Node.js HTTPサーバーで単一のCookieを取得および設定するサンプルコード
const http = require('http');
const server = http.createServer((req, res) => {
// Cookieを取得する
const cookie = req.headers.cookie;
if (cookie) {
console.log('Cookie:', cookie);
}
// Cookieを設定する
res.setHeader('Set-Cookie', 'myCookie=value');
res.end('Hello World!');
});
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
リクエストを処理する
Cookieを取得する
レスポンスを送信する
このコードを実行するには、次の手順に従います。
node index.js
コンソールに次の出力が表示されます。
Cookie: myCookie=value
Node.js HTTPサーバーで単一のCookieを取得および設定するその他の方法
このチュートリアルでは、Node.js HTTPサーバーで単一のCookieを取得および設定するその他の方法について説明します。
方法 1: cookieモジュールを使用する
cookie
モジュールは、Cookieの処理を容易にするためのNode.jsモジュールです。このモジュールを使用して、Cookieを解析および作成し、HTTPリクエストとレスポンスに含めることができます。
const http = require('http');
const cookie = require('cookie');
const server = http.createServer((req, res) => {
// Cookieを取得する
const cookies = cookie.parse(req.headers.cookie || '');
const myCookie = cookies.myCookie;
if (myCookie) {
console.log('Cookie:', myCookie);
}
// Cookieを設定する
res.setHeader('Set-Cookie', cookie.serialize('myCookie', 'value'));
res.end('Hello World!');
});
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
説明
このコードは、cookie
モジュールを使用してCookieを取得および設定します。
cookie.parse(req.headers.cookie || '')
は、リクエストヘッダーからCookieを解析し、JavaScriptオブジェクトに変換します。cookies.myCookie
は、myCookie
という名前のCookieの値を取得します。cookie.serialize('myCookie', 'value')
は、myCookie
という名前のCookieを値value
で作成し、文字列に変換します。
方法 2: expressフレームワークを使用する
express
は、Node.js Webアプリケーション開発用のフレームワークです。express
には、Cookieの処理を容易にする組み込み機能がいくつかあります。
const express = require('express');
const app = express();
// Cookieを取得する
app.use((req, res, next) => {
const myCookie = req.cookies.myCookie;
if (myCookie) {
console.log('Cookie:', myCookie);
}
next();
});
// Cookieを設定する
app.get('/', (req, res) => {
res.cookie('myCookie', 'value');
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
app.use((req, res, next) => {...})
は、すべてのリクエストに対して実行されるミドルウェア関数を定義します。req.cookies
は、リクエストからのCookieを取得するためのオブジェクトです。
どちらの方法を選択する必要がありますか?
- Cookieの処理をより簡単に行いたい場合は、
cookie
モジュールを使用することをお勧めします。 - より多くの機能を備えたフレームワークが必要な場合は、
express
フレームワークを使用することをお勧めします。
javascript node.js cookies