HTTP ステータスコード早見表

API や CDN でよく見るコードをまとめました。稀な実験コードは含めていません。

更新日:

コード名称意味
200OK成功(ボディあり)
201作成済みリソースを作成した
204コンテンツなし成功(空のボディ)
301恒久的に移動恒久的リダイレクト
302見つかりました一時的リダイレクト
304未変更キャッシュを利用
400不正なリクエストクライアントのリクエストが不正
401未認証認証が必要/失敗
403禁止認証済みだが拒否
404見つかりませんそのリソースは存在しない
405許可されていないメソッド誤った HTTP メソッド
408リクエストタイムアウトクライアントが遅すぎる
409競合状態の競合
410削除済み完全に削除済み
422処理できないエンティティセマンティクスが不正
429リクエスト過多レート制限中
500サーバー内部エラーサーバー側の障害
502不正なゲートウェイ上流の応答が不正
503サービス利用不可過負荷/停止中
504ゲートウェイタイムアウト上流のタイムアウト

注記

ステータスコードの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 ヘッダーに従ってください。

出典