HTTPヘッダー入門 - リクエスト/レスポンスヘッダーの全体像

入門 | 11分 で読める | 2026.05.02

公式ドキュメント

この記事の要点

• HTTPヘッダーはメタデータを伝える「名前: 値」形式のフィールド
リクエスト・レスポンス・一般・エンティティの4種類に分類される
• 実務ではContent-Type、Authorization、Cache-Controlなどを正しく理解することが重要

HTTPヘッダーとは

HTTPヘッダーは、リクエストやレスポンスに付随するメタデータ(付加情報)を伝える「名前: 値」形式のフィールドです。リクエストライン/ステータスラインの直後に配置されます。

GET /api/users HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer token123

役割: コンテンツタイプ、認証情報、キャッシュ制御、圧縮方式など、通信に必要な補足情報を伝えます。

ヘッダーの分類

HTTPヘッダーは用途に応じて4つに分類されます:

分類説明
一般ヘッダーリクエスト/レスポンス共通Date, Connection, Cache-Control
リクエストヘッダークライアント→サーバーHost, User-Agent, Accept
レスポンスヘッダーサーバー→クライアントServer, Set-Cookie, Location
エンティティヘッダーボディに関する情報Content-Type, Content-Length, Content-Encoding

ポイント: HTTP/2以降では「表現メタデータ」など名称が変わりましたが、概念的には同じです。この記事では理解しやすい従来の分類を使います。

主要な一般ヘッダー

リクエスト・レスポンス双方で使われるヘッダー:

ヘッダー説明
Dateメッセージ生成日時Date: Wed, 02 May 2026 10:00:00 GMT
Connection接続管理Connection: keep-alive
Cache-Controlキャッシュ制御Cache-Control: max-age=3600
Transfer-Encoding転送エンコーディングTransfer-Encoding: chunked
UpgradeプロトコルアップグレードUpgrade: websocket

Cache-Control - キャッシュ制御

# リクエスト(キャッシュを使わず最新データを取得)
GET /api/data HTTP/1.1
Cache-Control: no-cache

# レスポンス(3600秒キャッシュ可能)
HTTP/1.1 200 OK
Cache-Control: max-age=3600, public

主なディレクティブ:

ディレクティブ意味
max-age=秒キャッシュ有効期間
no-cache再検証が必要
no-storeキャッシュしない
public共有キャッシュ可能
privateプライベートキャッシュのみ

主要なリクエストヘッダー

クライアントがサーバーに送る情報:

ヘッダー説明
Hostターゲットホスト(HTTP/1.1で必須)Host: api.example.com
User-Agentクライアントソフトウェア情報User-Agent: Mozilla/5.0 (...)
Accept受け入れ可能なメディアタイプAccept: application/json
Accept-Language希望言語Accept-Language: ja, en;q=0.9
Accept-Encoding受け入れ可能な圧縮方式Accept-Encoding: gzip, deflate, br
Authorization認証情報Authorization: Bearer token123
CookieCookie送信Cookie: session_id=abc123
Referer参照元URLReferer: https://example.com/page
Originリクエスト元オリジン(CORS)Origin: https://app.example.com

Host - ターゲットホスト

# HTTP/1.1では必須(仮想ホスト対応)
GET /api/users HTTP/1.1
Host: api.example.com

注意: HTTP/1.1ではHostヘッダーは必須です。省略すると400 Bad Requestになります。

Accept系ヘッダー - コンテンツネゴシエーション

# クライアントの希望を伝える
GET /api/data HTTP/1.1
Accept: application/json, text/html;q=0.9, */*;q=0.8
Accept-Language: ja, en-US;q=0.9, en;q=0.8
Accept-Encoding: gzip, deflate, br

q値(品質値):

  • 0.0〜1.0で優先度を指定(デフォルト1.0)
  • ja, en;q=0.9 → 日本語優先、英語は次点

Authorization - 認証情報

# Basic認証
Authorization: Basic dXNlcjpwYXNzd29yZA==

# Bearer認証(JWT)
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

実践メモ: Basic認証はBase64エンコードのみで暗号化されていないため、必ずHTTPS上で使用してください。

# ブラウザが自動的に送信
GET /dashboard HTTP/1.1
Cookie: session_id=abc123; user_pref=dark_mode

主要なレスポンスヘッダー

サーバーがクライアントに返す情報:

ヘッダー説明
Serverサーバーソフトウェア情報Server: nginx/1.20.0
Set-CookieCookie設定Set-Cookie: session_id=abc; HttpOnly
Locationリダイレクト先Location: https://example.com/new
WWW-Authenticate認証方式の指示WWW-Authenticate: Bearer realm="api"
Access-Control-Allow-OriginCORS許可(重要)Access-Control-Allow-Origin: *
ETagリソースのバージョン識別子ETag: "abc123"
Expiresキャッシュ期限Expires: Thu, 03 May 2026 10:00:00 GMT
HTTP/1.1 200 OK
Set-Cookie: session_id=abc123; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=3600

主な属性:

属性説明
HttpOnlyJavaScriptからアクセス不可(XSS対策)
SecureHTTPS通信のみ送信
SameSiteCSRF対策(Strict/Lax/None)
Max-Age有効期間(秒)
PathCookie送信対象パス
DomainCookie送信対象ドメイン

ポイント: セキュリティのため、セッションCookieにはHttpOnly、Secure、SameSite=Strictを必ず設定しましょう。

Location - リダイレクト先

# 301リダイレクト
HTTP/1.1 301 Moved Permanently
Location: https://newdomain.com/page

# 201作成成功
HTTP/1.1 201 Created
Location: /api/users/456

Access-Control-Allow-Origin - CORS

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization

主要なエンティティヘッダー

リクエスト/レスポンスのボディに関する情報:

ヘッダー説明
Content-TypeメディアタイプContent-Type: application/json; charset=utf-8
Content-Lengthボディのサイズ(バイト)Content-Length: 1234
Content-Encoding圧縮方式Content-Encoding: gzip
Content-Languageコンテンツの言語Content-Language: ja
Content-Dispositionダウンロード指示Content-Disposition: attachment; filename="data.csv"
Last-Modified最終更新日時Last-Modified: Wed, 01 May 2026 10:00:00 GMT

Content-Type - メディアタイプ

# JSONリクエスト
POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "Alice"}

# HTMLレスポンス
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>...

主なメディアタイプ:

タイプ説明
application/jsonJSON
text/htmlHTML
text/plainプレーンテキスト
application/x-www-form-urlencodedフォームデータ
multipart/form-dataファイルアップロード
image/pngPNG画像

詳細は「Content-Type ヘッダー - MIMEタイプの基本」を参照してください。

Content-Encoding - 圧縮

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Length: 456

主な圧縮方式:

方式説明
gzipGNU zip(広くサポート)
deflateDEFLATE圧縮
brBrotli(効率的、モダンブラウザ対応)

Content-Disposition - ダウンロード

# ブラウザにダウンロードを指示
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Disposition: attachment; filename="users.csv"

カスタムヘッダー

標準ヘッダー以外に、独自のヘッダーを定義できます:

# カスタムヘッダー(慣例的にX-で始まる)
GET /api/data HTTP/1.1
X-Request-ID: uuid-1234-5678
X-Client-Version: 1.2.3

HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1714651200

注意: X-プレフィックスは非推奨になりました(RFC 6648)。新規のカスタムヘッダーは`X-`なしで定義すべきですが、既存のものは広く使われています。

実務でよく使うヘッダー10選

ヘッダー場面重要度
Content-Typeリクエスト/レスポンス★★★
AuthorizationAPI認証★★★
Cache-Controlパフォーマンス最適化★★★
Acceptコンテンツネゴシエーション★★☆
Set-Cookieセッション管理★★★
Locationリダイレクト・作成後のURL★★☆
Access-Control-Allow-OriginCORS設定★★★
User-Agentクライアント識別★☆☆
Refererアクセス元トラッキング★☆☆
ETagキャッシュ検証★★☆

ヘッダーの組み合わせ例

API認証とコンテンツネゴシエーション

GET /api/users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGc...
Accept: application/json
Accept-Language: ja
Accept-Encoding: gzip, br

ファイルダウンロード

HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="report.pdf"
Content-Length: 123456
Cache-Control: private, max-age=0

CORS対応API

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Credentials: true

まとめ

HTTPヘッダーは通信の詳細を制御する重要な仕組みです。特に、Content-Type、Authorization、Cache-Control、CORSヘッダーは、現代のWeb開発で必須の知識です。

関連記事

参考リソース

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

メールで無料相談する
← 一覧に戻る