HTTP ステータスコード早見表
API や CDN でよく見るコードをまとめました。稀な実験コードは含めていません。
| コード | 名称 | 意味 |
|---|---|---|
| 200 | OK | 成功(ボディあり) |
| 201 | 作成済み | リソースを作成した |
| 204 | コンテンツなし | 成功(空のボディ) |
| 301 | 恒久的に移動 | 恒久的リダイレクト |
| 302 | 見つかりました | 一時的リダイレクト |
| 304 | 未変更 | キャッシュを利用 |
| 400 | 不正なリクエスト | クライアントのリクエストが不正 |
| 401 | 未認証 | 認証が必要/失敗 |
| 403 | 禁止 | 認証済みだが拒否 |
| 404 | 見つかりません | そのリソースは存在しない |
| 405 | 許可されていないメソッド | 誤った HTTP メソッド |
| 408 | リクエストタイムアウト | クライアントが遅すぎる |
| 409 | 競合 | 状態の競合 |
| 410 | 削除済み | 完全に削除済み |
| 422 | 処理できないエンティティ | セマンティクスが不正 |
| 429 | リクエスト過多 | レート制限中 |
| 500 | サーバー内部エラー | サーバー側の障害 |
| 502 | 不正なゲートウェイ | 上流の応答が不正 |
| 503 | サービス利用不可 | 過負荷/停止中 |
| 504 | ゲートウェイタイムアウト | 上流のタイムアウト |
注記
- 401 と 403:認証失敗/未認証と、認証済みだが拒否。
- オリジンに届かないとき、CDN が 5xx を返すことがあります。
ステータスコードの5つのクラス
最初の桁は、誰が責任を持ち、おおむね何があったかを示します。1xxは情報提供用で、クライアントが実際に目にする機会はまれです。2xxは成功を意味し、200はボディ付き、204はボディなし、206は部分ダウンロードを表します。3xxはリソースが別の場所にあることを示し、4xxはリクエスト自体に問題があることを示します——構文エラー、認証情報の欠如、レート制限などです。5xxは、リクエストは適切なのにサーバーが失敗したことを意味します。最初の桁だけを読むだけでも、クライアント側を修正すべきか、サーバー側にエスカレーションすべきかがわかります。
適切なリダイレクトの選び方
301と308はどちらも恒久的な移動を、302と307はどちらも一時的な移動を意味します。違いはメソッドの取り扱い方にあり、301と302は歴史的にクライアントがPOSTをGETに変換できる一方、307と308は元のメソッドとボディを保持します。これはAPIやフォーム送信において重要です。URLが恒久的に移動した場合は301を、メンテナンスページやA/Bテストなどの一時的なルーティングには302または307を使用してください。リダイレクトチェーンには注意——余分なホップひとつひとつがレイテンシとリンクの評価価値を失わせるため、最終的な宛先に直接リダイレクトしてください。
4xxエラーの整理
401は認証が不足しているか失敗していることを意味し、有効な認証情報を送信することで解決できます。403はリクエストが理解され認証も完了したが許可されていないことを意味し、同じ認証情報で再試行しても役立ちません。404はリソースが存在しないことを意味し、410はかつて存在したが意図的に削除されたことを示します。429はレート制限に到達したことを意味し、Retry-Afterヘッダーを尊重してバックオフすべきです。400は通常、入力形式の不正を、405はそのURLに対してメソッドが間違っていることを、422は構文は正しいが内容の検証に失敗したことを意味します。
5xxコードの読み方
500は汎用的な内部エラーです。502 Bad Gatewayはアップストリームサーバーが使用できない応答を返したことを意味し、503はサービスが一時的に利用できないか過負荷であることを、504はアップストリームがタイムアウトしたことを意味します。これらはサーバー側の問題であり呼び出し側の問題ではないため、修正策はバックオフ付きの再試行、アップストリームの状態確認、または負荷の軽減です。CDNは到達できないオリジンの代わりに502、503、504を返すことがあるため、同じエラーが非常に異なる2つの場所から発生することがあります——どちらかを見極めるにはserverおよびcache-statusヘッダーを確認してください。
実践でのステータスコード:APIとキャッシュ
日常的に注意する価値のある2つの使い分けがあります。まずキャッシュについて:Cache-Controlヘッダー付きの200は保存可能であり、304 Not Modifiedはクライアントに自分のコピーを再利用するよう伝え、5xxはキャッシュすべきではありません。次にAPIについて:リソースを作成するPOSTは201とLocationヘッダーを返すべきであり、DELETEは204を返すことが多く、変更がないPATCHは200または204を返す場合があります。良く設計されたクライアントはまずクラス(2xx、4xx、5xx)で分岐し、その上で正確なコードを参照するため、再試行とバックオフのロジックがシンプルで予測可能になります。
よくある質問
- HTTP 403 はどういう意味ですか?
- 403 は、サーバーがリクエストを理解し認証も済んでいるものの、リソースへのアクセスを拒否している状態です。401 と違って再ログインでは解決しません。
- HTTP 301 と 302 リダイレクトの違いは?
- 301 は恒久的な移転を示し、クライアントや検索エンジンは今後新しい URL を使うべきです。302 は一時的なリダイレクトで、元の URL は有効のままです。
- HTTP 429 とは何ですか?どう解決すればいいですか?
- 429 はリクエスト過多でレート制限にかかったことを意味します。リクエスト間隔を空け、サーバーが返す Retry-After ヘッダーに従ってください。