HTTP の基本

Web 通信のプロトコル。メソッド・URL・ヘッダー・ボディのリクエストを送り、 ステータス・ヘッダー・ボディのレスポンスが返る。 HTTP/1.1 → 2 → 3 と進化してきた。

メソッド

メソッド用途idempotentsafe
GET取得
HEADヘッダーのみ取得
POST作成・任意の操作××
PUT置換(idempotent)×
PATCH部分更新×(実装次第)×
DELETE削除×
OPTIONS許可メソッド確認・CORS preflight
TRACE診断(普通使わない)
CONNECTプロキシ確立(HTTPS)××

ステータスコード

レンジ意味
1xxInformational — 100 Continue / 101 Switching Protocols / 103 Early Hints
2xxSuccess — 200 OK / 201 Created / 204 No Content / 206 Partial Content
3xxRedirect — 301 永続 / 302 一時 / 303 See Other / 304 Not Modified / 307 / 308
4xxClient Error — 400 / 401 / 403 / 404 / 405 / 409 / 410 / 413 / 415 / 422 / 429
5xxServer Error — 500 / 502 / 503 / 504

覚えておくと便利なステータス

主要なヘッダー

リクエスト側

レスポンス側

HTTP バージョン

HTTP/1.1

HTTP/2

HTTP/3 (QUIC)

HTTPS / TLS

リダイレクト

コード意味
301恒久。SEO 移転に
302一時(メソッド変更可。曖昧で非推奨)
303See Other(POST 後 GET)
307一時、メソッド維持
308恒久、メソッド維持

条件付きリクエスト

ETag / Last-Modified を使い、変更がなければ 304 で本文を返さない。 通信量と時間を節約。

GET /style.css HTTP/1.1
If-None-Match: "abc123"

→ 304 Not Modified  (変更なし)
→ 200 OK + ETag: "def456"  (変更あり)

圧縮

Range(部分取得)

動画のシーク、レジューム、巨大ファイルの分割取得に。

GET /video.mp4
Range: bytes=1024-2047

→ 206 Partial Content
   Content-Range: bytes 1024-2047/8192

Content-Type の主要

HTTP の検査ツール

curl の例

curl -i https://example.com                       # ヘッダー込み
curl -X POST -d '{"a":1}' -H "Content-Type: application/json" url
curl -H "Authorization: Bearer xxx" url
curl -L https://...                               # リダイレクト追従
curl -o file.zip https://...                      # 保存
curl --http3 https://...                          # HTTP/3 強制