HTTP ステータスコード一覧
100 から 511 までの HTTP ステータスコードについて、開発者にとっての意味と定義元の RFC をまとめました。nginx や Cloudflare などが使う非標準のコードも載せています。
全 78 件のステータスコード
1xx 情報
サーバーはリクエストを受け取り、まだ処理を続けています。最終的なレスポンスの前に送られる暫定レスポンスです。
- 100 Continue
- サーバーがリクエストヘッダーを受け取ったので、クライアントはボディを送ってかまいません。大きなデータをアップロードする前に、クライアントが Expect: 100-continue を送ってこの応答を求めます。 RFC 9110
- 101 Switching Protocols
- Upgrade ヘッダーの要求どおり、サーバーがこの接続のプロトコルを切り替えることに同意しました。WebSocket の接続はこれで始まります。 RFC 9110
- 102 Processing
- サーバーが WebDAV のリクエストを受け付けてまだ処理中であることを伝え、クライアントがタイムアウトしないようにします。現在の WebDAV 仕様には含まれておらず、送られることはほとんどありません。 RFC 2518
- 103 Early Hints
- 最終的なレスポンスの前に Link ヘッダー付きで送られます。サーバーがページを準備している間に、ブラウザがリソースのプリロードや接続の確立を始められます。 RFC 8297
2xx 成功
リクエストは受信、理解され、受け入れられました。
- 200 OK
- リクエストは成功しました。ボディには結果が入ります。GET ならリソース、POST なら処理の結果です。 RFC 9110
- 201 Created
- リクエストによって新しいリソースが作成されました。通常、その URL は Location ヘッダーで示されます。 RFC 9110
- 202 Accepted
- リクエストは処理のために受け付けられましたが、処理はまだ終わっておらず、失敗する可能性もあります。キューに入れる処理でよく使われます。 RFC 9110
- 203 Non-Authoritative Information
- リクエストは成功しましたが、オリジンサーバーが送ったレスポンスをプロキシが変更しています。 RFC 9110
- 204 No Content
- リクエストは成功し、返すボディはありません。DELETE や、クライアントがすでに新しい状態を持っている場合の PUT や PATCH でよく使われます。 RFC 9110
- 205 Reset Content
- リクエストは成功しました。クライアントは、フォームをクリアするなどして、送信元の画面をリセットしてください。ボディはありません。 RFC 9110
- 206 Partial Content
- ボディには Range ヘッダーで要求されたバイト範囲だけが入っています。ダウンロードの再開や動画のシークに使われます。 RFC 9110
- 207 Multi-Status
- ボディは、複数のリソースそれぞれのステータスを含む XML 文書です。WebDAV で使われます。 RFC 4918
- 208 Already Reported
- WebDAV の Multi-Status レスポンスの中で、すでに列挙済みのバインディングのメンバーを示し、重複を避けます。 RFC 5842
- 226 IM Used
- ボディは、現在のリソースに差分などのインスタンス操作を 1 つ以上適用した結果です。HTTP のデルタエンコーディングの一部ですが、実装されることはほとんどありません。 RFC 3229
3xx リダイレクト
リクエストを完了するには、クライアント側でさらに操作が必要です。多くの場合、別の URL へのリクエストです。
- 300 Multiple Choices
- リソースに複数の表現があり、クライアントがその中から選べます。選び方の標準的な方法がないため、ほとんど使われません。 RFC 9110
- 301 Moved Permanently
- 恒久的なリダイレクトです。リソースは Location ヘッダーで示される新しい URL に移っており、検索エンジンは通常、元の URL の代わりにその URL をインデックスします。リダイレクトをたどる際にクライアントが POST を GET に変えることがあるため、メソッドを保つには 308 を使います。 RFC 9110
- 302 Found
- 一時的なリダイレクトです。リソースは今のところ Location ヘッダーで示される別の URL にあります。リダイレクトをたどる際にクライアントが POST を GET に変えることがあるため、メソッドを保つには 307 を使います。 RFC 9110
- 303 See Other
- 応答は別の URL にあり、クライアントはそれを GET で取得します。フォームを POST した後の一般的なリダイレクトで、ページを再読み込みしてもフォームが再送信されないようにします。 RFC 9110
- 304 Not Modified
- クライアントのキャッシュにあるコピーがまだ最新なので、ボディは送られません。If-None-Match や If-Modified-Since を使った条件付きリクエストへの応答です。 RFC 9110
- 305 Use Proxy
- リソースには Location ヘッダーで指定されたプロキシを経由してアクセスする必要があります。セキュリティ上の理由で非推奨となっており、クライアントはこれに頼るべきではありません。 RFC 9110
- 306 (Unused)
- 以前の仕様で使われていたコードです。現在は使われておらず、番号は予約されたままです。 RFC 9110
- 307 Temporary Redirect
- リソースは一時的に別の URL にあります。クライアントは同じメソッドとボディでそこへリクエストし直す必要があります。 RFC 9110
- 308 Permanent Redirect
- リソースは新しい URL に恒久的に移りました。クライアントは同じメソッドとボディでそこへリクエストし直す必要があります。 RFC 9110
4xx クライアントエラー
リクエストにクライアント側の問題があります。形式が正しくない、権限がない、または応答できないものを求めているといった場合です。
- 400 Bad Request
- リクエストの形式が不正なため、サーバーが処理できません。構文の誤り、不正なフレーミング、解析できないボディなどが原因です。 RFC 9110
- 401 Unauthorized
- リクエストに有効な認証情報がありません。認証方法はレスポンスの WWW-Authenticate ヘッダーで示されます。名前に反して、このコードが扱うのは権限ではなく認証です。 RFC 9110
- 402 Payment Required
- 将来の利用のために予約されています。サブスクリプションの終了時や有料の利用枠を使い切ったときに、これを返す API もあります。 RFC 9110
- 403 Forbidden
- サーバーはリクエストを理解したうえで拒否しています。リクエストに認証情報が含まれていても、このリソースへのアクセス権はなく、送り直しても結果は変わりません。 RFC 9110
- 404 Not Found
- サーバーのこの URL には何もないか、あってもそれを明かしたくない場合に返されます。存在しない状態が恒久的かどうかは示しません。 RFC 9110
- 405 Method Not Allowed
- リソースは存在しますが、このメソッドには対応していません。対応しているメソッドは Allow ヘッダーに列挙されます。 RFC 9110
- 406 Not Acceptable
- リクエストの Accept、Accept-Language、Accept-Encoding ヘッダーの条件を満たすレスポンスをサーバーが生成できません。 RFC 9110
- 407 Proxy Authentication Required
- 401 と同様ですが、Proxy-Authenticate ヘッダーの指示に従ってプロキシで認証する必要があります。 RFC 9110
- 408 Request Timeout
- サーバーが待てる時間内にリクエスト全体を受け取れなかったため、接続を閉じます。 RFC 9110
- 409 Conflict
- リクエストがリソースの現在の状態と矛盾しています。古いバージョンをもとにした編集や、一意であるべき値の重複などです。 RFC 9110
- 410 Gone
- リソースは以前ここにありましたが、完全に削除されました。404 と違い、クライアントや検索エンジンにこの URL を破棄してよいことを伝えます。 RFC 9110
- 411 Length Required
- Content-Length ヘッダーがないため、サーバーがリクエストを拒否しています。 RFC 9110
- 412 Precondition Failed
- If-Match や If-Unmodified-Since などのヘッダーの条件が偽だったため、リクエストは適用されませんでした。ほかの人の変更を上書きしてしまうのを防ぎます。 RFC 9110
- 413 Content Too Large
- リクエストボディがサーバーの受け付ける上限を超えています。多くはサーバー自身かその前段のプロキシのアップロード上限が原因です。以前の名前は Payload Too Large でした。 RFC 9110
- 414 URI Too Long
- URL がサーバーの受け付ける長さを超えています。本来 POST のボディに入れるべきデータがクエリ文字列に入っていることがよくあります。 RFC 9110
- 415 Unsupported Media Type
- Content-Type または Content-Encoding ヘッダーで示されたリクエストボディの形式を、サーバーが受け付けません。 RFC 9110
- 416 Range Not Satisfiable
- Range ヘッダーがリソースの範囲外のバイトを要求しています。 RFC 9110
- 417 Expectation Failed
- リクエストの Expect ヘッダーで示された要件をサーバーが満たせません。 RFC 9110
- 418 I'm a teapot
- Hyper Text Coffee Pot Control Protocol に由来するエイプリルフールのジョークで、ティーポットがコーヒーを淹れるのを断るというものです。RFC 9110 ではこの番号を未使用として予約しています。ジョークとして使われすぎて、別の意味を与えられないためです。 RFC 2324, RFC 9110
- 421 Misdirected Request
- このホスト名に応答するよう設定されていないサーバーにリクエストが届きました。ブラウザが HTTP/2 の接続を別のホストに再利用したときに起こることがあり、クライアントは新しい接続で再試行できます。 RFC 9110
- 422 Unprocessable Content
- リクエストの構文は正しいものの、内容が不正です。たとえば JSON のボディがバリデーションに通らない場合です。WebDAV に由来し、そこでの名前は Unprocessable Entity でした。 RFC 9110, RFC 4918
- 423 Locked
- WebDAV のリソースがロックされているため、メソッドを適用できません。 RFC 4918
- 424 Failed Dependency
- 依存していた別の操作が失敗したため、この WebDAV リソースに対するメソッドは実行されませんでした。 RFC 4918
- 425 Too Early
- TLS の early data で届いたリクエストはリプレイの可能性があるため、サーバーは処理しません。クライアントはハンドシェイクの完了後に送り直してください。 RFC 8470
- 426 Upgrade Required
- サーバーはこのプロトコルでのリクエストを拒否し、クライアントが切り替えるべきプロトコルを Upgrade ヘッダーで示します。 RFC 9110
- 428 Precondition Required
- サーバーは If-Match などを使った条件付きリクエストを求めています。更新によって新しいバージョンが知らないうちに上書きされるのを防ぐためです。 RFC 6585
- 429 Too Many Requests
- クライアントが一定時間内に送ったリクエストが多すぎます。これをレート制限といいます。待つべき時間が Retry-After ヘッダーで示されることがあります。 RFC 6585
- 431 Request Header Fields Too Large
- ヘッダー全体、またはそのうちの 1 つがサーバーの受け付けるサイズを超えています。よくある原因は大きすぎる Cookie です。 RFC 6585
- 451 Unavailable For Legal Reasons
- 裁判所命令などの法的な要求により、サーバーがアクセスを拒否しています。番号は小説『華氏 451 度』にちなみます。 RFC 7725
5xx サーバーエラー
リクエストは正しいかもしれませんが、サーバーまたはその前段のゲートウェイが処理に失敗しました。
- 500 Internal Server Error
- サーバーで想定外の状況が発生しました。多くは処理されなかった例外です。原因はサーバーのログで確認します。 RFC 9110
- 501 Not Implemented
- リクエストに必要な機能にサーバーが対応していません。たとえば、認識できないメソッドの場合です。 RFC 9110
- 502 Bad Gateway
- ゲートウェイまたはプロキシが、背後のサーバーから不正なレスポンスを受け取りました。プロキシの背後のアプリケーションがクラッシュしているか、待ち受けていないことがよくあります。 RFC 9110
- 503 Service Unavailable
- 過負荷やメンテナンスのため、サーバーは現在リクエストを処理できません。再試行できる時期が Retry-After ヘッダーで示されることがあります。 RFC 9110
- 504 Gateway Timeout
- ゲートウェイまたはプロキシが、背後のサーバーから時間内にレスポンスを受け取れませんでした。アプリケーションが遅すぎるか、到達できないことがよくあります。 RFC 9110
- 505 HTTP Version Not Supported
- リクエストで使われた HTTP のメジャーバージョンにサーバーが対応していません。 RFC 9110
- 506 Variant Also Negotiates
- サーバーの設定ミスです。透過的コンテントネゴシエーションで選ばれたバリアント自体がネゴシエーションを行うよう設定されており、ループになっています。 RFC 2295
- 507 Insufficient Storage
- リクエストを完了するのに必要なデータをサーバーが保存できません。WebDAV 向けに定義されています。 RFC 4918
- 508 Loop Detected
- バインディングをたどる途中で無限ループを検出したため、サーバーが WebDAV の操作を中止しました。 RFC 5842
- 510 Not Extended
- サーバーが必要とする拡張がリクエストにありません。このコードを定義した仕様は現在 Historic となっており、IANA のレジストリでも廃止扱いです。 RFC 2774
- 511 Network Authentication Required
- ネットワークを利用するにはクライアントの認証が必要です。ホテルの Wi-Fi のサインインページのようなキャプティブポータルが返すもので、アクセスしようとしたサイトが返すものではありません。 RFC 6585
非標準のコード
これらのコードは IANA のレジストリにはありません。それぞれ特定のサーバーやサービスのもので、意味が通じるのはその中だけです。
- 419 Page Expired 非標準
- フォームの CSRF トークンがないか期限切れのときに Laravel が返します。 Laravel
- 444 No Response 非標準
- nginx の設定で 444 を返すと、レスポンスを送らずに接続を閉じます。nginx のログには記録されますが、クライアントには何も届きません。 nginx
- 494 Request Header Too Large 非標準
- リクエストヘッダーがバッファに収まらないときに nginx が内部で使います。クライアントには 400 レスポンスが返ります。 nginx
- 495 SSL Certificate Error 非標準
- クライアント証明書の検証に失敗したときに nginx が内部で使います。設定で処理しない限り、クライアントには 400 レスポンスが返ります。 nginx
- 496 SSL Certificate Required 非標準
- サーバーが要求する証明書をクライアントが提示しなかったときに nginx が内部で使います。 nginx
- 497 HTTP Request Sent to HTTPS Port 非標準
- HTTPS を想定したポートに平文の HTTP リクエストが届いたときに nginx が内部で使います。 nginx
- 499 Client Closed Request 非標準
- サーバーが応答する前にクライアントが接続を閉じたときに nginx がログに記録します。クライアントのタイムアウトがアプリケーションの処理時間より短いことを示している場合がよくあります。 nginx
- 509 Bandwidth Limit Exceeded 非標準
- サイトが帯域幅の割り当てを使い切ったときに、cPanel などのホスティング管理パネルが返します。 cPanel
- 520 Web Server Returned an Unknown Error 非標準
- オリジンサーバーが空のレスポンス、不明なレスポンス、または想定外のレスポンスを返したときに Cloudflare が返します。 Cloudflare
- 521 Web Server Is Down 非標準
- オリジンサーバーが Cloudflare からの接続を拒否したときに Cloudflare が返します。 Cloudflare
- 522 Connection Timed Out 非標準
- オリジンサーバーへの TCP 接続を時間内に確立できなかったときに Cloudflare が返します。 Cloudflare
- 523 Origin Is Unreachable 非標準
- DNS レコードの誤りやルーティングの問題などで、オリジンサーバーに到達できなかったときに Cloudflare が返します。 Cloudflare
- 524 A Timeout Occurred 非標準
- Cloudflare はオリジンサーバーに接続しましたが、オリジンが時間内に HTTP レスポンスを返しませんでした。 Cloudflare
- 525 SSL Handshake Failed 非標準
- Cloudflare とオリジンサーバーの間の TLS ハンドシェイクが失敗したときに Cloudflare が返します。 Cloudflare
- 526 Invalid SSL Certificate 非標準
- オリジンサーバーの TLS 証明書を検証できなかったときに Cloudflare が返します。 Cloudflare