Menu
日本語

HTTPステータスコード

すべてのHTTPステータスコードを検索でき、わかりやすく解説。

最終更新

  • 100Continue

    1xx

    リクエストの先頭部分を受信。クライアントは本文の送信を続けてください。

  • 101Switching Protocols

    1xx

    サーバーがプロトコル切り替えに同意(例: HTTP/1.1 から WebSocket)。

  • 102Processing

    1xx

    WebDAV — リクエストは受理されましたが、まだ完了していません。

  • 103Early Hints

    1xx

    Link ヘッダーと共に使用し、最終応答の前にクライアントがリソースをプリロードできるようにします。

  • 200OK

    2xx

    リクエスト成功。正確な意味はメソッドに依存します。

  • 201Created

    2xx

    リクエスト成功。新しいリソースが作成されました。

  • 202Accepted

    2xx

    リクエストは処理のため受理されましたが、まだ完了していません(非同期処理)。

  • 203Non-Authoritative Information

    2xx

    返されたメタデータは変換プロキシ由来であり、オリジンサーバーからのものではありません。

  • 204No Content

    2xx

    リクエスト成功。返却する本文はありません。

  • 205Reset Content

    2xx

    リクエストを送信したドキュメント表示をリセットするようクライアントに指示(例: フォームをクリア)。

  • 206Partial Content

    2xx

    Range リクエストへの応答に使用 — 本文には要求されたバイト範囲のみが含まれます。

  • 300Multiple Choices

    3xx

    リソースに複数の表現があります。クライアントが選択する必要があります。

  • 301Moved Permanently

    3xx

    リソースの恒久的な新URL。検索エンジンはインデックスを更新します。

  • 302Found

    3xx

    リソースは一時的に別のURLにあります。メソッドを保持する必要がある場合は 307 を使用。

  • 303See Other

    3xx

    POST後、結果を GET で取得するようクライアントをリダイレクト(Post/Redirect/Get)。

  • 304Not Modified

    3xx

    キャッシュされたコピーがまだ有効 — 条件付き GET(ETag / If-Modified-Since)への応答として送信。

  • 307Temporary Redirect

    3xx

    302 と同様だが、リダイレクトに従う際にリクエストメソッドを変更してはなりません。

  • 308Permanent Redirect

    3xx

    301 と同様だが、リダイレクトに従う際にリクエストメソッドを変更してはなりません。

  • 400Bad Request

    4xx

    クライアントのエラー(構文不正、不正なフレーミング)により、サーバーがリクエストを処理できないか拒否します。

  • 401Unauthorized

    4xx

    認証が必要で、失敗したか提供されていません。(名前に反して、認可ではなく認証についてです。)

  • 402Payment Required

    4xx

    将来の使用のために予約。API が有料クォータ超過を示すために使うことがあります。

  • 403Forbidden

    4xx

    サーバーはリクエストを理解しましたが、認可を拒否します。再認証しても解決しません。

  • 404Not Found

    4xx

    サーバーが要求されたリソースを見つけられません。

  • 405Method Not Allowed

    4xx

    リクエストメソッドはサーバーに知られていますが、対象リソースでサポートされていません。

  • 406Not Acceptable

    4xx

    クライアントが送信した Accept ヘッダーに一致する応答をサーバーが生成できません。

  • 407Proxy Authentication Required

    4xx

    401 と同様ですが、プロキシのための認証が必要です。

  • 408Request Timeout

    4xx

    サーバーがリクエストを待機中にタイムアウトしました。

  • 409Conflict

    4xx

    リクエストが対象リソースの現在の状態と競合します(例: バージョン競合)。

  • 410Gone

    4xx

    リソースは完全に削除され、転送先はありません。

  • 411Length Required

    4xx

    サーバーは Content-Length ヘッダーを要求します。

  • 412Precondition Failed

    4xx

    リクエストヘッダーの前提条件(例: If-Match)がサーバーで満たされませんでした。

  • 413Payload Too Large

    4xx

    リクエスト本文がサーバーが処理可能なサイズを超えています。

  • 414URI Too Long

    4xx

    URI がサーバーが解釈可能な長さを超えています。

  • 415Unsupported Media Type

    4xx

    リクエスト本文がサーバーまたはリソースがサポートしないメディアタイプを使用しています。

  • 416Range Not Satisfiable

    4xx

    Range ヘッダーがファイル範囲外の部分を要求しています。

  • 418I'm a teapot

    4xx

    RFC 2324 のエイプリルフールジョーク。コーヒーを淹れることを拒否するサーバーが返します。

  • 421Misdirected Request

    4xx

    応答を生成できないサーバーにリクエストが送信されました(例: 不正な HTTP/2 接続)。

  • 422Unprocessable Entity

    4xx

    リクエストは整形されていますが意味的なエラーがあります(API でバリデーション失敗によく使われます)。

  • 423Locked

    4xx

    WebDAV — アクセスされているリソースはロックされています。

  • 425Too Early

    4xx

    サーバーは再送される可能性のあるリクエストを処理したくありません。

  • 426Upgrade Required

    4xx

    クライアントはリクエストを完了するために別のプロトコル(例: TLS)にアップグレードする必要があります。

  • 428Precondition Required

    4xx

    サーバーはリクエストが条件付きであることを要求します(更新の喪失問題を防ぐため)。

  • 429Too Many Requests

    4xx

    クライアントが一定時間内に多すぎるリクエストを送信しました(レート制限)。

  • 431Request Header Fields Too Large

    4xx

    ヘッダーフィールド(または全体のヘッダー)が大きすぎるため、サーバーがリクエストを拒否します。

  • 451Unavailable For Legal Reasons

    4xx

    法的理由によりリソースは利用できません(『華氏 451 度』に由来)。

  • 500Internal Server Error

    5xx

    サーバーが予期しない状況に遭遇しました。万能の 5xx エラーです。

  • 501Not Implemented

    5xx

    サーバーはリクエストメソッドを認識しません。

  • 502Bad Gateway

    5xx

    ゲートウェイとして動作するサーバーが、アップストリームから無効な応答を受信しました。

  • 503Service Unavailable

    5xx

    サーバーがリクエストを処理する準備ができていません — 通常は過負荷またはメンテナンス中です。

  • 504Gateway Timeout

    5xx

    ゲートウェイとして動作するサーバーが、アップストリームから時間内に応答を受け取れませんでした。

  • 505HTTP Version Not Supported

    5xx

    サーバーはリクエストで使用された HTTP バージョンをサポートしていません。

  • 507Insufficient Storage

    5xx

    WebDAV — サーバーがリクエスト完了に必要な表現を保存できません。

  • 508Loop Detected

    5xx

    WebDAV — サーバーが処理中に無限ループを検出しました。

  • 511Network Authentication Required

    5xx

    ネットワークアクセスのためにクライアントは認証が必要です(キャプティブポータル)。

HTTPステータスコードとは?

HTTPステータスコードは、サーバーがすべてのレスポンスの先頭で返す3桁の数字で、リクエストの結果を要約するものです。ブラウザ、クライアント、プロキシ、CDNはこの値を見て、キャッシュするか、リダイレクトするか、リトライするか、ユーザーにエラーを表示するかを判断します。

ステータスコードは先頭の数字によって5つのクラスのいずれかに分類されます。1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラーです。クラスさえ分かれば、具体的なコードを調べる前でもおおよその意味は掴めます。

ほとんどのアプリで実際に使うのはごく一部のコア(200、201、204、301、302、304、400、401、403、404、409、422、429、500、502、503)に絞られます。それぞれが*何を意味するか*を理解し、401 Unauthorized403 Forbidden301 Moved Permanently302 Foundの違いをきちんと説明できるようになると、バックエンドやAPIの設計力が一段上がります。

このリファレンスを使いながら身につくこと

  • 先頭の数字を見ればクラスが分かる:1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラー。
  • ステータスコードはAPIが提示する*契約の一部*。クライアントはコードで分岐すべきで、ボディの中のエラーメッセージを文字列パースするのは筋が悪い。
  • 4xxはクライアントの落ち度(不正な入力、認証不足、リソース不存在など)。5xxはクライアントが何をしたかに関係なくサーバー側が失敗したことを示す。

ステータスコードリファレンスの使い方

  1. コードまたは名前で検索

    数字(404429)でもキーワード(authredirectrate limit)でも入力すれば、該当するコードがその場で絞り込まれます。

  2. クラスで絞り込み

    クラスのチップ(1xx、2xx、3xx、4xx、5xx)を使えば、検索ではなくざっと眺めたいときに範囲を狭められます。

  3. 平易な解説を読む

    各エントリには、そのコードが返される場面、典型的なクライアントの挙動、最も多い原因をまとめてあります。

  4. 似たコードを比較する

    紛らわしい組み合わせ(401と403301と302など)には関連リンクを張ってあるので、自分のAPIに合うのはどちらかを判断しやすくなっています。

HTTPステータスコードのクラス

HTTPステータスコードの5つのクラスと、それぞれの意味を一目で把握できる早見表。定義はRFC 9110、登録はIANA HTTP Status Code Registryにあります。

クラス意味代表的なコード
1xx Informationalリクエスト受領、処理中100, 101, 103
2xx Successリクエストは成功した200, 201, 204, 206
3xx Redirection別の場所を見てほしい301, 302, 304, 307, 308
4xx Client errorリクエストに何か問題がある400, 401, 403, 404, 409, 422, 429
5xx Server error正しいリクエストなのにサーバーが処理できなかった500, 502, 503, 504

押さえておきたい代表的なHTTPステータスコード

200 OK と 201 Created と 204 No Content

200 OK

「とりあえず全部うまくいった」を表す定番のレスポンス。ボディあり。

201 Created

リクエストの結果として新しいリソースが作成された場合に返す。たいていはPOSTの後。

204 No Content

成功したがボディなし。DELETEや、戻り値が不要なPUTの後によく使う。

3つとも成功系のコードですが、レスポンスに何を載せるかが違います。201は新しく作ったリソースを指すLocationヘッダを付けるべきで、204は定義上ボディが空です。

301 Moved Permanently と 302 Found

301

恒久的なリダイレクト。ブラウザも検索エンジンも記憶するので、元のURLは事実上死んだ扱いになる。

302

一時的なリダイレクト。ブラウザは毎回元のURLを叩き直すし、ブックマークも元のままになる。

リソースを本当に移した(リブランド、URL構造の見直しなど)ときは301を使います。A/Bテスト、ログイン後のリダイレクト、メンテナンスページのような短命な転送は302が適切です。

401 Unauthorized と 403 Forbidden

401

そもそも認証されていない。サーバーは「あなたが誰か」を知らない状態。

403

サーバーは「あなたが誰か」は分かっているが、このリソースに対する権限がない状態。

別の認証情報を送れば解決する可能性があるなら401を返します。どんな認証情報を送っても解決しない(このユーザーにはそもそも触らせない)なら403です。

500 と 502 と 503 と 504

500

汎用的なサーバーエラー。要は自分のコードが拾い切れなかった例外を投げた状態。

502

Bad Gateway。手前のプロキシ(CDNやロードバランサー)が上流サーバーに到達できなかった。

503

Service Unavailable。サーバーは生きているが、過負荷またはメンテナンス中で応答できない。

504

Gateway Timeout。プロキシが上流には届いたものの、応答が時間内に返ってこなかった。

どれもサーバーエラーですが、デバッグ時に示唆する内容はまったく違います。500はアプリ自身の問題、502504はネットワーク経路、503はキャパシティの問題を疑うサインです。

HTTPステータスコードでよくあるミス

  • 200 OKを返しつつボディに{"error": "..."}を詰める。ステータスコードは契約の一部なので、適切なコード(400404500)を返してクライアントが分岐できるようにする。
  • 権限エラーに401を使う。401は認証用で、権限不足は403
  • 新規作成したリソースに200を返す。本来は201を返し、Locationヘッダで作成先のURLを示すべき。

HTTPステータスコードのFAQ

HTTP 404はどういう意味?
404 Not Foundは、リクエスト自体は理解できたが、そのURLに対応するリソースが存在しないことを示します。原因として多いのはパスの間違い、リソースの削除、URLのタイプミスなどです。
401と403の違いは?
401 Unauthorizedは未認証、つまりサーバーがあなたを誰だか把握していない状態。403 Forbiddenは認証は済んでいるが、そのリソースへの権限がない状態です。401は別の認証情報を送れば解決する可能性がありますが、403は何を送っても解決しません。
301と302の違いは?
301 Moved Permanentlyは恒久的なリダイレクトで、ブラウザや検索エンジンは記録を更新します。302 Foundは一時的なリダイレクトで、クライアントは元のURLにアクセスし続けます。恒久移転には301、一時的な迂回には302を使います。
HTTP 500はどういう意味?
500 Internal Server Errorはサーバー側の汎用エラーで、捕捉されなかった例外がそのまま外まで漏れたときによく出ます。クライアントに非はなく、正しいリクエストなのにサーバー側が処理に失敗した状態です。
毎回必ず具体的なステータスコードを使うべき?
はい。失敗時に何でも200 OKを返したり、すべての異常を500にまとめてしまうとAPIは扱いにくくなります。最も的確なコードを選びましょう。クライアント、プロキシ、監視ツール、リトライロジックはすべてステータスコードで挙動を分岐させます。
HTTP 429はどういう意味?
429 Too Many Requestsは、クライアントがレート制限に引っかかったときに返すコードです。レスポンスにはRetry-Afterヘッダを含めて、いつ再試行して良いかをクライアントに伝えるのが望ましいです。

詳しく見る

その他の開発者ツール

Coddyでコードを学ぼう

始める