HTTP リクエストヘッダーの X-Request-ID の主な用途として、正しいものはどれですか?
1〜4キーで選択、Enterで回答できます
解説
正解は「1つのリクエストに一意な ID を付け、複数のサーバーやサービスのログを横断して」です。X-Request-ID はリクエストごとに固有の ID を載せるヘッダーで、ロードバランサー、API サーバー、内部サービスなどがその ID をログに記録することで、1つのリクエストの流れをまとめて追跡できるようになります。RFC で標準化されたものではありませんが、広く使われている慣習的なヘッダーです。Express での基本的な実装例import express from 'express'; import { randomUUID } from 'node:crypto'; const app = express(); app.use((req, res, next) => { // 上流から ID が届いていなければ、ここで新しく発行する const id = req.get('X-Request-ID') ?? randomUUID(); res.set('X-Request-ID', id); // レスポンスにも返し、問い合わせ時に使えるようにする console.log(`[${id}] ${req.method} ${req.url}`); // ログに ID を含める next(); }); app.listen(3000);エラー発生時に利用者からこの ID を教えてもらえば、該当するログをすぐに検索できます。その他の選択肢について「同じリクエストが二重に送られたとき」: ID を付けるだけで重複が自動で拒否されることはありません。二重処理の防止には Idempotency-Key などを使い、サーバー側で判定処理を実装します。「ログイン中のユーザーを識別する」: ユーザーの識別には Cookie などで管理するセッション ID を使います。「ブラウザがキャッシュした内容が」: これは ETag や If-None-Match の役割です。外部から届いた ID をそのままログに書き込まないクライアントは任意の値を送れるため、非常に長い文字列や改行を含む値をそのまま記録すると、ログの改ざん(偽の行の挿入)につながります。英数字とハイフンのみ・一定の長さまでといった形式チェックを行い、条件に合わない場合は新しい ID を発行してください。参考HTTP Request IDs | Heroku Dev Center