メインコンテンツへスキップ

HTTPヘッダーの詳細

📬HTTPヘッダーの詳細

HTTPヘッダーは、リクエストやレスポンスに付けられる追加情報です。
たとえば、どんな言語が好まれるか、どんなブラウザか、どれくらいのサイズのデータを扱うか、などの情報をやり取りします。


📤 リクエストヘッダー(クライアント→サーバ)

主なリクエストヘッダー一覧

ヘッダー名 説明
Host 接続先のホスト名(例: example.com)
User-Agent ブラウザやアプリの情報(例: Chrome, curl)
Accept 受け入れ可能なMIMEタイプ(例: text/html
Accept-Language 言語の優先順位(例: ja,en-US;q=0.8
Accept-Encoding 圧縮形式の指定(例: gzip, deflate
Connection 接続の維持を要求(例: keep-alive
Content-Type 送信データの形式(例: application/json
Content-Length ボディのバイト数
Authorization 認証情報(例: Bearer トークン
Cookie クライアントが持っているクッキー情報

Authorization ヘッダーは、Basic認証やBearerトークン(OAuthなど)で使われます。APIの利用時に重要です。


📥 レスポンスヘッダー(サーバ→クライアント)

主なレスポンスヘッダー一覧

ヘッダー名 説明
Content-Type 返すデータの形式(例: text/html, application/json
Content-Length 本文のバイト数
Set-Cookie クッキーを設定(例: セッションID)
Location リダイレクト先URL(例: 302 Found時)
Cache-Control キャッシュ制御(例: no-cache, max-age=3600
ETag コンテンツのバージョン情報(後述)
Last-Modified 最終更新日時(例: Wed, 17 May 2023 10:00:00 GMT
Access-Control-Allow-Origin CORS対策で外部ドメインを許可する場合に使用

ETagLast-Modifiedを使うことで、「変わっていなければキャッシュを使ってOK(304 Not Modified)」という効率的な通信が可能になります。


🗃️ 分類で理解するHTTPヘッダー

🔑 認証・状態管理

  • Authorization, Cookie, Set-Cookie

📦 コンテンツ情報

  • Content-Type, Content-Length, Content-Encoding, Content-Disposition

🧭 ネゴシエーション(クライアントが好みを伝える)

  • Accept, Accept-Encoding, Accept-Language, User-Agent

📆 キャッシュ管理

  • Cache-Control, ETag, If-None-Match, Last-Modified, If-Modified-Since

🔁 接続制御

  • Connection, Keep-Alive, Transfer-Encoding

🌐 CORS(クロスオリジン対策)

  • Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers

CORSヘッダーを誤って設定すると、意図しない第三者にAPIを使われることがあります。セキュリティに注意!


📌 よく使われる組み合わせの例

JSON形式のAPIにPOSTする例(リクエスト)

POST /api/items HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer abc123
Content-Length: 37

{"name": "みかん", "price": 120}

それに対するレスポンス(サーバ)

HTTP/1.1 201 Created
Content-Type: application/json
Cache-Control: no-store
Set-Cookie: session_id=xyz789; HttpOnly

{"id": 42, "name": "みかん", "price": 120}

🧭 おまけ:ブラウザで確認する方法

  • Chrome:F12 → [Network] → 任意の通信を選択 → [Headers]

  • curl:curl -I https://example.com でレスポンスヘッダーを確認

開発中はcurlPostmanでヘッダーのやり取りを確認すると理解が深まります。