Node.jsでCookie操作
Node.js HTTPサーバーで単一のCookieを取得および設定する
Node.jsのHTTPサーバーでCookieを操作する方法について説明します。
Cookieの取得
Node.jsのHTTPサーバーでCookieを取得するには、HTTPリクエストのheaders
オブジェクトのcookie
プロパティを使用します。このプロパティには、クライアントから送信されたすべてのCookieがセミコロンで区切られた文字列として含まれています。
const http = require('http');
http.createServer((req, res) => {
const cookies = req.headers.cookie;
if (cookies) {
const cookieArray = cookies.split(';');
for (const cookie of cookieArray) {
const [name, value] = cookie.trim().split('=');
if (name === 'myCookie') {
console.log('Cookie value:', value);
break;
}
}
}
res.end();
}).listen(3000);
このコードでは、HTTPリクエストを受信すると、req.headers.cookie
プロパティからCookieを取得します。その後、Cookieをセミコロンで区切って配列に分割し、ループを使用して各Cookieのキーと値を抽出します。特定のCookieの値が必要な場合は、キーを比較して取得することができます。
Node.jsのHTTPサーバーでCookieを設定するには、HTTPレスポンスのsetHeader
メソッドを使用してSet-Cookie
ヘッダーを設定します。このヘッダーには、Cookieのキー、値、およびオプションの属性(有効期限、パス、ドメインなど)が含まれます。
const http = require('http');
http.createServer((req, res) => {
res.setHeader('Set-Cookie', 'myCookie=myValue; expires=Thu, 18 Dec 2024 12:00:00 GMT; path=/');
res.end();
}).listen(3000);
このコードでは、HTTPレスポンスを返す前に、Set-Cookie
ヘッダーを設定して新しいCookieを設定します。myCookie
という名前のCookieにmyValue
という値を設定し、有効期限を指定しています。
const http = require('http');
http.createServer((req, res) => {
const cookies = req.headers.cookie;
if (cookies) {
const cookieArray = cookies.split(';');
for (const cookie of cookieArray) {
const [name, value] = cookie.trim().split('=');
if (name === 'myCookie') {
console.log('Cookie value:', value);
break;
}
}
}
res.end();
}).listen(3000);
req.headers.cookie
プロパティからCookieを取得します。- Cookieをセミコロンで区切って配列に分割します。
- ループを使用して各Cookieのキーと値を抽出します。
- 特定のCookieの値が必要な場合は、キーを比較して取得します。
以下のコードは、HTTPレスポンスのsetHeader
メソッドを使用してCookieを設定します。
const http = require('http');
http.createServer((req, res) => {
res.setHeader('Set-Cookie', 'myCookie=myValue; expires=Thu, 18 Dec 2024 12:00:00 GMT; path=/');
res.end();
}).listen(3000);
res.setHeader
メソッドを使用してSet-Cookie
ヘッダーを設定します。myCookie
という名前のCookieにmyValue
という値を設定します。- 有効期限を設定します。
- パスを設定します。
cookie-parser
cookie-parser
は、Node.jsのミドルウェアで、HTTPリクエストからCookieを解析し、HTTPレスポンスにCookieを設定するための簡単なAPIを提供します。
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
app.get('/', (req, res) => {
const myCookie = req.cookies.myCookie;
console.log('Cookie value:', myCookie);
res.cookie('myCookie', 'newValue', { expires: new Date(Date.now() + 600000) });
res.send('Hello, world!');
});
app.listen(3000);
js-cookie
js-cookie
は、ブラウザ側でCookieを操作するためのJavaScriptライブラリですが、Node.jsの環境でも使用することができます。
const jsCookie = require('js-cookie');
// Cookieの取得
const myCookie = jsCookie.get('myCookie');
console.log('Cookie value:', myCookie);
// Cookieの設定
jsCookie.set('myCookie', 'newValue', { expires: new Date(Date.now() + 600000) });
cookies
cookies
は、Node.jsのシンプルなCookie操作ライブラリです。
const cookies = require('cookies');
// Cookieの取得
const myCookie = cookies(req, res).get('myCookie');
console.log('Cookie value:', myCookie);
// Cookieの設定
cookies(req, res).set('myCookie', 'newValue', { expires: new Date(Date.now() + 600000) });
javascript node.js cookies