3秒でわかる
HTTP リクエストの本文とは別に添える付帯情報。認証トークンや受け取りたい形式、送信元の種類などをサーバーへ伝えます。
30秒図解
もう少し詳しく
どういうものか
リクエストヘッダーは、HTTP リクエストの先頭部分に「名前と値」の組で並ぶ付帯情報です。本文が「何を送るか」であるのに対し、ヘッダーは「誰が、どんな形式で、どう扱ってほしいか」を伝えます。Authorization、Content-Type、Accept、User-Agent、Cookie あたりが日常的に扱うものです。
なぜ必要か
同じ URL に対して、ブラウザは HTML を求め、モバイルアプリは JSON を求めることがあります。URL を分けてもよいのですが、それでは似た経路が増え続けます。ヘッダーで意図を伝えれば経路は 1 本のままです。認証も同様で、トークンを URL のクエリに入れるとブラウザ履歴やアクセスログに残るため、ヘッダーで送るのが基本になっています。
具体例
curl -i https://api.example.com/orders -H "Authorization: Bearer eyJhbGciOi..." -H "Accept: application/json" -H "Content-Type: application/json" -d '{"item_id": 12}'const res = await fetch("/api/orders", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({ itemId: 12 }),
});つまずきやすいところ
Content-Type を付け忘れると、サーバーが本文を解析できず空のオブジェクトとして受け取る。JSON を送っているのに値が届かない典型例Bearer の後ろの半角スペースを落とすとトークンが読み取れないAccess-Control-Allow-Headers で許可されないと preflight で弾かれる似た用語との違い
| 場所 | 用途 |
|---|---|
| リクエストヘッダー | クライアントからサーバーへの付帯情報 |
| レスポンスヘッダー | サーバーからクライアントへの付帯情報 |
| クエリ文字列 | 取得条件。履歴やログに残る |
| ボディ | 送信する本体データ |
覚え方
封筒の宛名書きと切手にあたる部分です。中身(ボディ)とは別に、扱い方の指示が表面に書かれています。