HTTP ステータスコード一覧
すべての HTTP レスポンスは、何が起きたかをクライアントに伝える 3 桁のステータスコードで始まります。クラスごとにコードを一覧で確認でき、わかりやすい解説やレスポンス例に加えて、各コードがリダイレクトと SEO にどう影響するかも紹介しています。
1xx 情報レスポンス
リクエストを受信し、処理を継続していることを示します。これらの暫定レスポンスは最終レスポンスより前に返され、リダイレクトチェーンの終点になることはありません。
- 100
継続
「Expect: 100-continue」を付けて送信したクライアントに、リクエストヘッダーが受け入れられたことを伝え、リクエストボディの送信を促す暫定レスポンスです。 - 101
プロトコルの切り替え
サーバーがクライアントの Upgrade リクエストを受け入れ、この接続を別のプロトコルに切り替えたことを示します。実際にはほとんどが WebSocket です。 - 102
処理中
サーバーが時間のかかるリクエストをまだ処理しており、そのまま待つようクライアントに伝える、WebDAV の廃止済みの暫定レスポンスです。 - 103
早期ヒント
最終レスポンスより先に Link ヘッダーを送る暫定レスポンスです。サーバーの処理中に、ブラウザーはアセットのプリロードや事前接続を始められます。
2xx 成功
リクエストが正常に受信、理解、受理されたことを示します。正常なリダイレクトチェーンは、このいずれか(通常は 200 OK)で終わります。
- 200
OK
リクエストが成功したことを示します。GET ではボディに要求したリソースが含まれます。リダイレクトチェーンは、200 を返す URL で終わるのが正常です。 - 201
作成完了
リクエストが成功し、新しいリソースが作成されたことを示します。通常は POST や PUT の後に返され、Location ヘッダーがあれば新しいリソースを指します。 - 202
受理
リクエストは処理のために受け付けられましたが、まだ完了していません。非同期ジョブに使われ、最終的な結果は保証されません。 - 203
非権威的な情報
リクエストは成功しましたが、変換プロキシがレスポンスを変更したため、内容はオリジンサーバーが送ったものと完全には一致しません。 - 204
コンテンツなし
リクエストは成功し、返すコンテンツはありません。ブラウザーは現在のページにとどまります。DELETE、ビーコン、CORS のプリフライトでよく使われます。 - 205
コンテンツのリセット
リクエストは成功しました。クライアントは、送信したばかりのフォームをクリアするなどして、ドキュメントの表示をリセットする必要があります。 - 206
部分コンテンツ
クライアントが Range ヘッダーで指定したバイト範囲だけを送るレスポンスです。動画のストリーミングやダウンロードの再開に使われます。 - 207
マルチステータス
複数のリソースやプロパティそれぞれのステータスコードを、XML の multistatus ボディにまとめて返す WebDAV のレスポンスです。 - 208
報告済み
WebDAV の 207 レスポンス内で、このコレクションのメンバーがすでに列挙済みであることを示します。バインディングがループしていても、延々と繰り返さずに済みます。 - 226
IM 適用済み
サーバーが GET にデルタエンコーディング(RFC 3229)で応答したことを示します。ボディには、クライアントが持つバージョンからの変更分だけが含まれます。
3xx リダイレクト
クライアントが追加の操作を行う必要があることを示します。通常は、Location ヘッダーに示された URL をリクエストします。リダイレクトチェーンを構成するのは、これらのコードです。
- 300
複数の選択肢
リソースに複数の表現があり、クライアントがその中から選べることを示します。Location ヘッダーがあっても、ブラウザーは 300 を自動的にはたどりません。 - 301
恒久的な移動
リソースが Location ヘッダーで示される新しい URL に恒久的に移動したことを示します。クライアントや検索エンジンは、今後は新しい URL を使います。 - 302
一時的な移動
リソースが一時的に別の URL にあることを示します。クライアントは Location ヘッダーに従いますが、今後も元の URL を使い続けます。 - 303
他の URL を参照
GET で取得すべき別の URL にクライアントをリダイレクトします。主にフォーム送信後に結果ページを表示するために使われます(Post/Redirect/Get)。 - 304
未更新
条件付きの GET や HEAD への応答です。クライアントのキャッシュがまだ有効なため、サーバーはボディを送らず、キャッシュ済みのコピーが再利用されます。 - 305
プロキシを使用
非推奨です。Location で示したプロキシ経由でリクエストし直すようクライアントに伝えるコードでしたが、ブラウザーはセキュリティ上の理由から無視します。 - 306
未使用(旧 Switch Proxy)
予約済みで未使用のコードです。かつて「Switch Proxy」として提案されましたが取り下げられました。使用してはならず、クライアントは未知の 3xx コードとして扱います。 - 307
一時的なリダイレクト
Location の URL に、同じメソッドとボディでリクエストし直す必要がある一時的なリダイレクトです。POST が GET に変わることがある 302 とは異なります。 - 308
恒久的なリダイレクト
リクエストメソッドとボディを維持する恒久的なリダイレクトです。301 と同じく今後は新しい URL を使いますが、POST が GET に変わることはありません。
4xx クライアントエラー
送信された内容のままではリクエストを処理できないことを示します。ページが存在しない、アクセスが拒否された、クライアントが送信したリクエストが多すぎる、といったケースです。
- 400
不正なリクエスト
構文の誤り、無効な URL、大きすぎる Cookie など、クライアント側のエラーが原因で、サーバーがリクエストを処理しないことを示します。 - 401
認証が必要
リクエストには有効な認証が必要です。サーバーは、Basic や Bearer など認証方法を示す WWW-Authenticate ヘッダーを送る必要があります。 - 402
支払いが必要
HTTP で将来の使用のために予約されたコードです。実際には、支払い、クレジット、サブスクリプションが必要な場合に使う API やサービスもあります。 - 403
アクセス禁止
サーバーはリクエストを理解しましたが、許可を拒否しています。401 とは異なり、同じ認証情報を送り直しても解決しません。 - 404
リソースが見つからない
この URL にはサーバー上に何もないか、存在するかどうかを明かさないことを示します。存在しないのが一時的か恒久的かは示しません。 - 405
許可されていないメソッド
URL は存在しますが、静的ページへの POST のように、使われた HTTP メソッドに対応していません。対応するメソッドは Allow ヘッダーに示されます。 - 406
受理できない
クライアントの Accept 系ヘッダー(形式、言語、エンコーディング)に合うレスポンスを作成できず、デフォルトの表現も送らないことを示します。 - 407
プロキシ認証が必要
401 と似ていますが、クライアントとサーバーの間にあるプロキシが認証を求めています。認証方法は Proxy-Authenticate ヘッダーで示されます。 - 408
リクエストタイムアウト
サーバーが完全なリクエストを時間内に受信できず、接続を閉じたことを示します。クライアントは新しい接続でリクエストを送り直せます。 - 409
競合
リクエストがリソースの現在の状態と競合していることを示します。たとえば、編集の競合、レコードの重複、バージョンの不一致です。 - 410
削除済み
リソースが意図的に削除され、戻る見込みがないことを示します。404 Not Found よりも明確で、恒久的なシグナルです。 - 411
Content-Length が必要
ボディがあるのに Content-Length ヘッダーのないリクエストを、サーバーが拒否したことを示します。有効な Content-Length を付ければ再送できます。 - 412
前提条件の不成立
If-Match や If-Unmodified-Since など、リクエストヘッダーの条件が偽だったため、サーバーが変更を適用しなかったことを示します。 - 413
コンテンツが大きすぎる
大きすぎるファイルのアップロードなどで、リクエストボディがサーバーの受け付ける上限を超えています。以前の名称は「Payload Too Large」「Request Entity Too Large」です。 - 414
URI が長すぎる
リクエストされた URL が、サーバーが処理できる長さを超えていることを示します。たとえば、リダイレクトループで URL にパラメーターが追加され続けた場合です。 - 415
未対応のメディアタイプ
リクエストボディの形式(Content-Type)やコンテンツのエンコーディング(Content-Encoding)に対応していないため、サーバーがボディを拒否しています。 - 416
範囲外のリクエスト
リクエストの Range ヘッダーで指定したバイト範囲がファイルの外にあることを示します。変更されたファイルの末尾より先からダウンロードを再開した場合などです。 - 417
Expect に対応できない
リクエストの Expect ヘッダーが示す期待に、サーバーが応えられないことを示します。実際には、Expect: 100-continue に対応していないという意味です。 - 418
私はティーポット
1998 年のコーヒーポット制御プロトコル(RFC 2324)に由来する、エイプリルフールのジョークです。HTTP では未使用として予約されていますが、意図的に返すサイトもあります。 - 421
誤った宛先へのリクエスト
このホスト名に応答できないサーバーにリクエストが届いたことを示します。多くの場合、TLS の SNI の不一致や HTTP/2 接続の再利用が原因です。 - 422
処理できないコンテンツ
リクエストの形式は正しいものの、内容が意味的に無効であることを示します。典型的には API のバリデーションエラーです。旧称は「Unprocessable Entity」です。 - 423
ロック中
WebDAV で、リソースがロックされているため今はメソッドを適用できないことを示します。クライアントはロックトークンを提示するか、ロックの解除を待つ必要があります。 - 424
依存関係の失敗
WebDAV で、依存する別の操作が失敗したため、メソッドを実行できなかったことを示します。たとえば、PROPPATCH のプロパティの 1 つが失敗した場合です。 - 425
早すぎるリクエスト
リプレイされるおそれがあるため、TLS の早期データ(0-RTT)として送られたリクエストをサーバーが処理しないことを示します。クライアントはハンドシェイク後に再試行します。 - 426
アップグレードが必要
サーバーが現在のプロトコルでのリクエストの処理を拒否し、Upgrade ヘッダーで示したプロトコルへのアップグレードを求めていることを示します。 - 428
前提条件が必要
複数のクライアントが同じリソースを編集する際の更新の消失を防ぐため、サーバーが条件付きリクエスト(If-Match)を要求していることを示します。 - 429
リクエスト過多
一定時間内に送られたリクエストが多すぎることを示します(レート制限)。再試行までの待ち時間が Retry-After ヘッダーで示されることもあります。 - 431
リクエストヘッダーが大きすぎる
ヘッダーが大きすぎるため、サーバーがリクエストを拒否していることを示します。たいていは、ブラウザーが送る Cookie が多すぎるか大きすぎることが原因です。 - 444
応答なし
nginx nginx の非標準コードで、レスポンスを一切送らずにサーバーが接続を閉じます。クライアントには空の応答が届き、444 を受け取ることはありません。 - 451
法的理由により利用不可
裁判所の命令や政府によるブロックなど、法的な要求によってアクセスが拒否されていることを示します。番号はレイ・ブラッドベリの小説『華氏 451 度』に由来します。 - 499
クライアントによる切断
nginx サーバーがレスポンスを送る前にクライアントが接続を閉じたとき、nginx がアクセスログに記録する非標準のコードです。
5xx サーバーエラー
一見正しいリクエストに対して、サーバーが処理を完了できなかったことを示します。5xx エラーが続くと、訪問者もクローラーも同じようにページにアクセスできなくなります。
- 500
サーバー内部エラー
サーバー側の汎用的なエラーです。アプリケーションのクラッシュや設定ファイルの不備など、サーバー上で何らかの問題が発生しています。 - 501
未実装
リクエストの処理に必要な機能に、サーバーが対応していないことを示します。典型的には、サーバーが認識しない HTTP メソッドです。 - 502
不正なゲートウェイ
ゲートウェイやプロキシが、上流のサーバーから無効なレスポンスを受け取ったことを示します。たとえば、nginx の背後にあるアプリケーションがクラッシュした場合です。 - 503
サービス利用不可
過負荷やメンテナンスのため、サーバーが一時的にリクエストを処理できないことを示します。再試行のタイミングは Retry-After で示せます。 - 504
ゲートウェイタイムアウト
ゲートウェイやプロキシが、上流のサーバーから時間内にレスポンスを受け取れなかったことを示します。典型的には、アプリケーションの処理が遅すぎることが原因です。 - 505
未対応の HTTP バージョン
リクエストで使われた HTTP のメジャーバージョンに、サーバーが対応していないか、対応を拒否していることを示します。現在では、リクエストラインの不正を示すことがよくあります。 - 506
ネゴシエーションの循環
透過的コンテンツネゴシエーション(RFC 2295)におけるサーバーの設定エラーです。選ばれたバリアント自体がネゴシエーションの対象になっており、ループが生じています。 - 507
ストレージ不足
WebDAV で、ディスクやユーザーの容量制限がいっぱいになったなどの理由で、リクエストの完了に必要なデータをサーバーが保存できないことを示します。 - 508
ループを検出
WebDAV で、バインディングの無限ループを検出したため、サーバーが Depth: infinity の操作を中止したことを示します。リダイレクトループとは関係ありません。 - 510
拡張宣言の不足
廃止された HTTP Extension Framework(RFC 2774)に由来し、リクエストに必要な拡張の宣言がないことを示します。歴史的なコードで、実質的に使われていません。 - 511
ネットワーク認証が必要
ネットワーク(通常は Wi-Fi のキャプティブポータル)が、アクセスを許可する前にサインインを求めていることを示します。送信するのはオリジンサーバーではなく、通信に割り込むネットワークです。 - 520
ウェブサーバーの不明なエラー
Cloudflare Cloudflare 固有のコードです。クラッシュや接続のリセットなどにより、オリジンサーバーが空のレスポンス、不明なレスポンス、想定外のレスポンスを返したことを示します。 - 521
ウェブサーバーがダウン
Cloudflare Cloudflare 固有のコードです。オリジンサーバーが Cloudflare からの接続を拒否したことを示します。通常は、ウェブサーバーが停止しているか、Cloudflare をブロックしています。 - 522
接続タイムアウト
Cloudflare Cloudflare 固有のコードです。Cloudflare がオリジンへの TCP 接続を時間内に確立できなかったか、オリジンがリクエストに受信確認を返さなかったことを示します。 - 523
オリジンに到達できない
Cloudflare Cloudflare 固有のコードです。Cloudflare がオリジンにまったく到達できないことを示します。典型的には、ルーティングの問題か、DNS に登録したオリジンの IP アドレスの誤りが原因です。 - 524
タイムアウトが発生
Cloudflare Cloudflare 固有のコードです。Cloudflare はオリジンに接続できたものの、読み取りタイムアウト(デフォルトで約 2 分)までに HTTP レスポンスを受け取れなかったことを示します。 - 525
SSL ハンドシェイクの失敗
Cloudflare Cloudflare 固有のコードです。オリジンに有効な証明書がないなどの理由で、Cloudflare とオリジンの間の TLS ハンドシェイクが失敗したことを示します。 - 526
無効な SSL 証明書
Cloudflare Cloudflare 固有のコードです。Full (strict) モードで、期限切れ、自己署名、別のホスト名用などの理由により、Cloudflare がオリジンの証明書を検証できなかったことを示します。 - 530
Cloudflare 1xxx エラー
Cloudflare Cloudflare 固有のコードです。1016(Origin DNS error)や 1033(Cloudflare Tunnel error)など、Cloudflare の 1xxx エラーと一緒に返されます。
HTTP ステータスコードの読み方
最初の桁はレスポンスのクラスを表し、残りの 2 桁はそのクラス内での具体的な意味を表します。クライアントは、個別のコードを認識できない場合、そのクラスの x00 コードと同じように扱います。そのため、未知の 4xx コードは 400 Bad Request と同様に処理されます。
数字の後に続く Not Found や Moved Permanently などのリーズンフレーズ(reason phrase)は、人が読むための説明にすぎません。クライアントは数字だけを見て動作し、HTTP/2 と HTTP/3 ではリーズンフレーズ自体が送信されません。
リダイレクトのステータスコード早見表
- 301 Moved Permanently:恒久的。ブラウザーが POST を GET に変更する場合があります。ページを移転したときの標準的な選択肢です。
- 302 Found:一時的。メソッドが変更される場合があります。多くのフレームワークでデフォルトになっています。
- 303 See Other:一時的。リダイレクト先には常に GET でアクセスします。フォーム送信後に使われます。
- 307 Temporary Redirect:一時的。メソッドとボディが維持されます。
- 308 Permanent Redirect:恒久的。メソッドとボディが維持されます。
- 304 Not Modified:別の URL へのリダイレクトではなく、クライアントがキャッシュしているコピーがまだ有効であることを示すシグナルです。
それぞれの使い分けについては、リダイレクトのステータスコード解説をご覧ください。
リダイレクトチェーンにおけるステータスコード
リダイレクトチェーンとは、最終レスポンスに到達するまで続く一連の 3xx レスポンスのことです。訪問者やクローラーが実際に受け取るのは最後のステータスコードだけです。そのため、途中のリダイレクトがどれほど正しく見えても、404 で終わるチェーンはリンク切れです。URL リダイレクトチェッカーを使えば各ホップ(リダイレクトの 1 ステップ)のステータスコードを確認でき、リダイレクト一括チェッカーなら多数の URL をまとめてチェックできます。
URL リダイレクトチェッカー
無料の TrueURL リダイレクトチェッカーで、URL が返すすべてのステータスコードをホップごとに確認できます。