HTTPステータスコード
すべてブラウザ内で動きます。ファイルやデータが外部に送られることはありません。
| 1xx情報レスポンス | ||
|---|---|---|
| 100 | Continue | リクエストの最初の部分を受信しており、クライアントは処理を続行してよいことを示す。 |
| 101 | Switching Protocols | サーバーはクライアントの要求どおりにプロトコルを切り替えることに同意する。 |
| 102 | Processing | サーバーはリクエストを受信して処理中だが、まだレスポンスは用意できていない。 |
| 103 | Early Hints | 最終的なHTTPメッセージより前に、一部のレスポンスヘッダーを返すために使われる。 |
| 2xx成功 | ||
| 200 | OK | リクエストは成功した。 |
| 201 | Created | リクエストは成功し、その結果として新しいリソースが作成された。 |
| 202 | Accepted | リクエストは受理されたが、まだ処理は行われていない。 |
| 203 | Non-Authoritative Information | 返されたメタデータはオリジンサーバーからのものと完全には一致しない。 |
| 204 | No Content | サーバーはリクエストを処理したが、返送するコンテンツはない。 |
| 205 | Reset Content | サーバーはクライアントに対し、このリクエストを送信した文書をリセットするよう求める。 |
| 206 | Partial Content | クライアントが送信したRangeヘッダーに基づき、サーバーはリソースの一部のみを返送している。 |
| 207 | Multi-Status | 複数のステータスコードが適切となる状況で、複数のリソースに関する情報を伝える。 |
| 208 | Already Reported | DAVのレスポンス内で使われ、複数のバインディングのメンバーを繰り返し列挙しないようにする。 |
| 226 | IM Used | サーバーはリソースへのリクエストを満たしており、レスポンスはインスタンス操作の結果の表現である。 |
| 3xxリダイレクト | ||
| 300 | Multiple Choices | リクエストには複数の候補となるレスポンスがあり、クライアントはその中から一つを選ぶべきである。 |
| 301 | Moved Permanently | リソースは新しいURLに恒久的に移動した。 |
| 302 | Found | リソースは一時的に別のURLに存在している。 |
| 303 | See Other | レスポンスは別のURLで取得でき、GETメソッドで取得すべきである。 |
| 304 | Not Modified | リソースはリクエストヘッダーで指定されたバージョンから変更されていない。 |
| 305 | Use Proxy | 要求されたリソースには、locationフィールドで示されたプロキシ経由でアクセスしなければならない。 |
| 307 | Temporary Redirect | リソースは一時的に別のURLに存在しており、リクエストメソッドは変更すべきではない。 |
| 308 | Permanent Redirect | リソースは恒久的に移動しており、リクエストメソッドは変更すべきではない。 |
| 4xxクライアントエラー | ||
| 400 | Bad Request | クライアント側のエラーにより、サーバーはリクエストを処理できない。 |
| 401 | Unauthorized | 要求されたレスポンスを得るには、クライアントは自身を認証しなければならない。 |
| 402 | Payment Required | 将来の利用のために予約されており、当初はデジタル決済システム向けに意図されていた。 |
| 403 | Forbidden | クライアントにはそのコンテンツへのアクセス権がない。 |
| 404 | Not Found | サーバーは要求されたリソースを見つけられない。 |
| 405 | Method Not Allowed | リクエストメソッドはサーバーに認識されているが、対象のリソースではサポートされていない。 |
| 406 | Not Acceptable | サーバーは、許容可能な値の一覧に一致するレスポンスを生成できない。 |
| 407 | Proxy Authentication Required | クライアントはまずプロキシに対して自身を認証しなければならない。 |
| 408 | Request Timeout | サーバーはリクエストを待つ間にタイムアウトした。 |
| 409 | Conflict | リクエストは対象リソースの現在の状態と競合している。 |
| 410 | Gone | 要求されたコンテンツはサーバーから恒久的に削除されており、今後も戻ってこない。 |
| 411 | Length Required | サーバーは、Content-Lengthヘッダーが定義されていないリクエストを受け付けない。 |
| 412 | Precondition Failed | リクエストヘッダーの条件のいずれかが満たされなかった。 |
| 413 | Payload Too Large | リクエストのエンティティがサーバーで定められた上限より大きい。 |
| 414 | URI Too Long | クライアントが要求したURIが、サーバーが処理できる長さを超えている。 |
| 415 | Unsupported Media Type | 要求されたデータのメディア形式はサーバーでサポートされていない。 |
| 416 | Range Not Satisfiable | Rangeヘッダーで指定された範囲を満たすことができない。 |
| 417 | Expectation Failed | Expectリクエストヘッダーで示された期待値を満たすことができなかった。 |
| 418 | I'm a Teapot | サーバーはコーヒーを淹れることを拒否する。なぜなら、それは恒久的にティーポットだからである。 |
| 419 | Page Expired非公式 | 非標準。フォームと一緒に送られたCSRFトークンがセッションと一致しないときにLaravelが返す。ページを開いたままセッションが切れた場合によく起きる。 |
| 420 | Enhance Your Calm非公式 | 非標準。旧Twitterの検索・トレンドAPIがレート制限中のクライアントに返していた。標準のコードは429である。Spring Frameworkも420をMethod Failureとして定義していたが、現在は非推奨。 |
| 421 | Misdirected Request | リクエストは、レスポンスを生成できないサーバーに向けられた。 |
| 422 | Unprocessable Content | リクエストの形式は正しかったが、意味的な誤りのため処理できなかった。 |
| 423 | Locked | アクセスしようとしているリソースはロックされている。 |
| 424 | Failed Dependency | リクエストは、失敗した別のリクエストに依存していたため失敗した。 |
| 425 | Too Early | サーバーは、再送される可能性のあるリクエストの処理をリスクとみなし、応じようとしない。 |
| 426 | Upgrade Required | サーバーは現在のプロトコルでのリクエスト処理を拒否する。 |
| 428 | Precondition Required | オリジンサーバーは、リクエストが条件付きであることを要求する。 |
| 429 | Too Many Requests | クライアントが一定時間内に送信したリクエストが多すぎる。 |
| 431 | Request Header Fields Too Large | リクエストのヘッダーフィールドが大きすぎるため、サーバーは処理を拒否する。 |
| 444 | No Response非公式 | 非標準。レスポンスを一切送らずに接続を閉じるnginxのコード。ブラウザには届かず、サーバーのログにだけ記録される。 |
| 451 | Unavailable For Legal Reasons | 要求されたリソースは、アクセスを拒否するよう求める法的要求により利用できない。 |
| 499 | Client Closed Request非公式 | 非標準。サーバーが応答を終える前にクライアントが接続を閉じたときにnginxがログに記録する。 |
| 5xxサーバーエラー | ||
| 500 | Internal Server Error | サーバーは対処方法のわからない状況に遭遇した。 |
| 501 | Not Implemented | リクエストメソッドはサーバーでサポートされておらず、処理できない。 |
| 502 | Bad Gateway | サーバーはゲートウェイとして動作している際に、上流サーバーから不正なレスポンスを受け取った。 |
| 503 | Service Unavailable | サーバーはリクエストを処理する準備ができておらず、多くの場合メンテナンスや過負荷が原因である。 |
| 504 | Gateway Timeout | サーバーはゲートウェイとして動作している際に、時間内にレスポンスを得られなかった。 |
| 505 | HTTP Version Not Supported | リクエストで使用されているHTTPバージョンはサーバーでサポートされていない。 |
| 506 | Variant Also Negotiates | 透過的コンテントネゴシエーションにおいて、サーバーの内部設定に誤りがある。 |
| 507 | Insufficient Storage | サーバーは、リクエストを完了するために必要な表現を保存できない。 |
| 508 | Loop Detected | サーバーはリクエストの処理中に無限ループを検出した。 |
| 510 | Not Extended | サーバーがリクエストを満たすには、さらなる拡張が必要である。 |
| 511 | Network Authentication Required | クライアントはネットワークアクセスを得るために認証が必要である。 |
| 599 | Network Connect Timeout Error非公式 | 一部のプロキシが、プロキシ配下でのネットワーク接続タイムアウトを示すために使う非標準のコードである。 |
このツールについて
これは100番から599番までのHTTPステータスコードのリファレンスで、RFC 9110が定める5つのクラス(情報、成功、リダイレクト、クライアントエラー、サーバーエラー)を網羅しています。各コードには名前と短い説明が付いており、検索ボックスに入力するとコード番号・名前・説明文のいずれかに一致する行だけが表示されます。
リストには何が含まれている?
RFC 9110に登録されているコードに加えて、正式な仕様には入っていないものの実際のAPIで頻繁に見かける代表的なコードも収録しています。RFC 2324由来のジョークである418(ティーポット)、429(レート制限)、451(法的理由による利用不可)などです。「404」や「not found」、「gateway」のように入力すると、一致する行だけが残り、それ以外は隠れるので、目的のコードを探すために5つのクラスを端から見ていく必要はありません。各行には個別のリンクもあり、ページのアドレスの末尾に#419を付けるとそのコードへ直接移動できます。
419や420のような非公式コードとは?
RFCではなく、特定のフレームワークやサーバーが使っているコードもあります。リストではこれらに「非公式」のラベルを付けています。HTTP 419エラー(Page Expired)はLaravelが返すもので、フォームと一緒に送られたCSRFトークンがセッションと一致しないときに発生します。ページを開いたままにしている間にセッションが切れた、というのがよくある原因です。ステータスコード420(Enhance Your Calm)は、旧Twitterの検索・トレンドAPIがリクエストを送りすぎたクライアントに返していたものです。この場合の標準コードは429です。Spring Frameworkでも420がMethod Failureとして定義されていましたが、現在は非推奨です。ほかにnginxのコードが2つあります。444はレスポンスを一切返さずに接続を閉じ、499はサーバーが応答し終える前にクライアントが接続を切ったことを示します。どちらもブラウザではなくサーバーのログで目にするコードです。最後の599は、一部のプロキシがネットワーク接続タイムアウトに使っています。
インターネット接続は必要?
いいえ。リストはページ内に直接埋め込まれた静的データで、読み込み時にも検索時にもサーバーへの通信は発生しません。そのため検索も即座に反映され、入力のたびに通信を待つようなことはありません。
どんなときに使う?
APIのレスポンスをデバッグしていて422が400と何が違うのか思い出せないときや、リダイレクトを301、302、308のどれで返すべきか迷って違いを確認したいときに便利です。また、409(競合)、416(範囲が満たせない)、502(不正なゲートウェイ)と503(サービス利用不可)の違いのように、頻繁には出てこないので覚えにくいコードを調べるのにも役立ちます。各コードの詳細や、よく組み合わされるメソッド・ヘッダーについてはMDNのHTTPステータスコードリファレンスを参照してください。
5つのクラスを知っておくだけでも、正確な番号を確認する前にレスポンスのおおまかな意味がつかめます。先頭が2ならリクエスト成功、3ならリダイレクトをたどる必要がある、4ならリクエスト自体に問題がある、5ならサーバー側の問題です。サーバーやブラウザ、APIクライアントが先頭の数字だけで処理を分岐させることが多いのもこのためで、正確なコードを知りたい場合でもまずこの分類を意識しておくと役立ちます。開発者でなくても十分に使えるツールで、素っ気ない数字だけが表示されるエラーページに出会ったときも、このリストがあれば意味を日本語の文章として理解できます。