TL;DR
クライアントが HTTP のリクエストに付けて送るヘッダフィールド。リクエストの文脈、クライアントの情報、認証情報などをサーバに伝える。
なぜ必要か
サーバは、リクエストの対象だけでなく、誰がどんな状況で送ったかを知ると、適切な応答を返せる。たとえば、ユーザエージェントの制限を避けたり、認証済みのクライアントにだけ応答したりできる。
仕組み
RFC 9110 の 3.4 節によると、リクエストのヘッダには、リクエストの修飾子、クライアントの情報、表現のメタデータを伝えるフィールドが入る。10.1 節では、リクエストの文脈(ユーザ、ユーザエージェント、リクエストの元になったリソースの情報)を伝えるフィールドとして、Expect、From、Referer、TE、User-Agent を定めている。
例
- User-Agent: リクエストを送ったユーザエージェントの情報。サーバは相互運用性の問題の切り分けや、利用状況の分析に使う
- Referer: リクエストの対象 URI を取得した元のリソースの URI。フィールド名は referrer の誤記のまま定められている
- Authorization: ユーザエージェントがオリジンサーバに対して自分を認証するための情報(11.6.2 節)