ネットワーク
HTTP ステータスコード一覧
HTTP ステータスコード(1xx〜5xx)を一覧表示。各コードの意味・よくある原因・対処法まで解説した開発者向けリファレンスです。コード番号を入力する詳細検索付き。
| コード | 名称 | 意味 | よくある原因 |
|---|---|---|---|
| 1xx — 情報レスポンス | |||
| 100 | Continue (継続) | リクエストの最初の部分を受理し、クライアントは残りを送信してよいことを示す。 | 大きなリクエストボディを送る前に Expect: 100-continue を付けた場合に返る。 |
| 101 | Switching Protocols (プロトコル切替) | サーバーが Upgrade ヘッダーの要求を受け入れ、別のプロトコルに切り替えることを示す。 | WebSocket 接続確立時に見られる正常な応答。 |
| 102 | Processing (処理中) | サーバーがリクエストを受理して処理中だが、まだ応答を用意できていないことを示す(WebDAV)。 | 処理に時間がかかる WebDAV 操作でタイムアウトを避けるために送信される。 |
| 103 | Early Hints (早期ヒント) | 最終レスポンスの前に Link ヘッダー等を先行送信し、リソースの先読みを可能にする。 | CDN やリバースプロキシが CSS/JS のプリロードを早める目的で付与する。 |
| 2xx — 成功 | |||
| 200 | OK (成功) | リクエストが正常に処理されたことを示す、最も一般的な成功レスポンス。 | |
| 201 | Created (作成完了) | リクエストの結果、新しいリソースが作成されたことを示す。 | POST で新規リソースを作成する API が返す。Location ヘッダーに新リソースの URL を含めるのが一般的。 |
| 202 | Accepted (受理) | リクエストを受理したが、処理はまだ完了していないことを示す(非同期処理)。 | キューに投入するだけの非同期 API や、バッチ処理の受付エンドポイントで使われる。 |
| 204 | No Content (コンテンツなし) | 処理は成功したが、返すべき本文がないことを示す。 | DELETE 成功時や、PUT で更新後に本文を返さない API 設計の場合に用いられる。 |
| 206 | Partial Content (部分コンテンツ) | クライアントの Range ヘッダー指定に応じて、リソースの一部だけを返したことを示す。 | 動画のシーク再生や、ダウンロードの再開(レジューム)で発生する正常な応答。 |
| 3xx — リダイレクト | |||
| 301 | Moved Permanently (恒久的に移動) | リソースが新しい URL に恒久的に移動したことを示す。検索エンジンは評価を新 URL に引き継ぐ。 | URL 構造変更・独自ドメインへの移行時に旧 URL からのリダイレクト設定として使う。 |
| 302 | Found (一時的に発見) | リソースが一時的に別の URL にあることを示す。恒久的な移動には 301 を使うべき。 | メンテナンス中の一時的な振り分けや、ログイン後のリダイレクトによく使われる。 |
| 303 | See Other (他を参照) | 処理結果を別の URL に GET で取得させたいことを示す(POST-Redirect-GET パターン)。 | フォーム送信(POST)後にブラウザの再送信ダイアログを避けるために使われる。 |
| 304 | Not Modified (未更新) | キャッシュされたリソースが更新されていないため、本文を再送しないことを示す。 | If-None-Match / If-Modified-Since を使った条件付きリクエストで、キャッシュが有効な場合に返る。 |
| 307 | Temporary Redirect (一時的リダイレクト) | 一時的なリダイレクトで、302 と異なりメソッドとボディを変更せず再送する。 | POST/PUT のボディを保ったままリダイレクトさせたい API 設計で使われる。 |
| 308 | Permanent Redirect (恒久的リダイレクト) | 恒久的なリダイレクトで、301 と異なりメソッドとボディを変更せず再送する。 | API バージョン移行など、メソッドを保持したまま恒久移転させたい場合に使う。 |
| 4xx — クライアントエラー | |||
| 400 | Bad Request (不正なリクエスト) | リクエストの構文やパラメータが不正でサーバーが理解できないことを示す。 | JSON の構文エラー・必須パラメータ欠落・型の不一致が典型的な原因。 |
| 401 | Unauthorized (認証エラー) | 認証情報が無いか無効であることを示す(実際には「未認証」の意味)。 | トークンの期限切れ・Authorization ヘッダー未送信・API キー誤りが多い。 |
| 402 | Payment Required (支払い要求) | 将来の利用のために予約されているステータスで、決済が必要な場合に使われることがある。 | 一部の API が利用上限超過や課金プラン切れを示すために独自利用している。 |
| 403 | Forbidden (禁止) | サーバーがリクエストを理解したが、アクセス権限がないために拒否したことを示す。 | 権限不足・IP 制限・CORS ポリシー違反・ファイルのパーミッション設定ミスが典型例。 |
| 404 | Not Found (未検出) | 指定されたリソースが見つからないことを示す。 | ルート未登録・URL のタイポ・削除済みリソースへのアクセスが主な原因。 |
| 405 | Method Not Allowed (許可されないメソッド) | リソースは存在するが、指定した HTTP メソッドが許可されていないことを示す。 | GET のみ許可のエンドポイントに POST を送るなど、メソッドの取り違えが典型的。 |
| 406 | Not Acceptable (受理不可) | クライアントの Accept ヘッダーが要求する形式をサーバーが提供できないことを示す。 | API が JSON しか返さないのに Accept: application/xml を指定した場合等に発生する。 |
| 408 | Request Timeout (リクエストタイムアウト) | サーバーがクライアントからのリクエスト完了を待つ間にタイムアウトしたことを示す。 | 低速な回線・巨大なアップロード・クライアント側の処理停止が原因になりやすい。 |
| 409 | Conflict (競合) | リクエストがリソースの現在の状態と競合していることを示す。 | 同時編集による楽観的ロックの失敗や、重複作成の試みで発生する。 |
| 410 | Gone (消滅) | リソースが恒久的に削除され、今後も存在しないことを示す(404 より強い意味)。 | 意図的に削除・廃止したコンテンツであることを検索エンジンに明示したい場合に使う。 |
| 413 | Payload Too Large (ペイロード過大) | リクエストボディがサーバーの許容サイズを超えていることを示す。 | ファイルアップロードのサイズ上限超過や、Nginx/PHP のサイズ制限設定不足。 |
| 414 | URI Too Long (URI過長) | リクエスト URI がサーバーの処理できる長さを超えていることを示す。 | GET リクエストのクエリパラメータに大量のデータを詰め込んだ場合に発生しやすい。 |
| 415 | Unsupported Media Type (非対応メディアタイプ) | リクエストボディの Content-Type をサーバーがサポートしていないことを示す。 | JSON API に Content-Type: text/plain で送ってしまう等のヘッダー設定ミスが多い。 |
| 422 | Unprocessable Entity (処理不可能なエンティティ) | 構文は正しいが、意味的な検証(バリデーション)に失敗したことを示す。 | フォームのバリデーションエラー(必須項目不足・形式不正)を返す際によく使われる。 |
| 425 | Too Early (早すぎる) | リプレイ攻撃のリスクがあるため、サーバーが早期データでのリクエスト処理を拒否したことを示す。 | TLS 1.3 の 0-RTT データを使った再送攻撃対策として返されることがある。 |
| 429 | Too Many Requests (リクエスト過多) | 一定時間内のリクエスト数がレート制限を超えたことを示す。 | API のレート制限超過。Retry-After ヘッダーで再試行までの待機時間が示されることが多い。 |
| 451 | Unavailable For Legal Reasons (法的理由による利用不可) | 法的な要求(裁判所命令等)によりコンテンツへのアクセスが禁止されていることを示す。 | 著作権侵害の申し立てや特定国の法規制により、コンテンツ提供者がアクセスを遮断した場合に返る。 |
| 5xx — サーバーエラー | |||
| 500 | Internal Server Error (サーバー内部エラー) | サーバー側で予期しないエラーが発生し、リクエストを処理できなかったことを示す。 | アプリケーションの未処理例外・設定ミス・DB接続失敗など原因は多岐にわたる。 |
| 501 | Not Implemented (未実装) | サーバーがリクエストされたメソッドをサポートしていないことを示す。 | 未実装の HTTP メソッド(例: PATCH)を古いサーバー実装に送った場合に発生する。 |
| 502 | Bad Gateway (不正なゲートウェイ) | プロキシやゲートウェイが上流サーバーから不正な応答を受け取ったことを示す。 | アップストリームのアプリケーションサーバーのダウンやクラッシュが典型的な原因。 |
| 503 | Service Unavailable (サービス利用不可) | サーバーが一時的に過負荷またはメンテナンス中でリクエストを処理できないことを示す。 | 高負荷によるリソース枯渇や、計画メンテナンスでの一時停止が主な原因。 |
| 504 | Gateway Timeout (ゲートウェイタイムアウト) | プロキシやゲートウェイが上流サーバーからの応答を時間内に受け取れなかったことを示す。 | バックエンド処理の長時間化やネットワーク遅延、上流サーバーのハングが原因になりやすい。 |
| 505 | HTTP Version Not Supported (非対応HTTPバージョン) | サーバーがリクエストで使用された HTTP バージョンをサポートしていないことを示す。 | 古いクライアントや誤設定されたプロキシが想定外の HTTP バージョンで通信した場合に発生する。 |
| 507 | Insufficient Storage (ストレージ不足) | サーバーがリクエストを完了するための十分なストレージ容量を持たないことを示す(WebDAV)。 | ディスク容量不足によりファイル保存系の操作が失敗した場合に返る。 |
| 508 | Loop Detected (ループ検出) | リクエスト処理中に無限ループを検出したことを示す(WebDAV)。 | WebDAV のバインド設定に循環参照がある場合に発生する。 |
| 511 | Network Authentication Required (ネットワーク認証が必要) | クライアントがネットワークへのアクセス権を得るために認証を行う必要があることを示す。 | 公共Wi-Fi等のキャプティブポータル(ログインページ)にリダイレクトさせる際に使われる。 |
Tips
- 404 と 410 は似ていますが、410 は「意図的に削除し今後も復活しない」ことを示す点が異なります。リダイレクト先がないコンテンツは 410 を使うと検索エンジンへの意図が明確になります。
- 301 と 308、302 と 307 はそれぞれ「恒久的/一時的」という点は同じですが、308 と 307 は POST のボディを維持したまま再送する点で 301・302 と異なります。
- 429 Too Many Requests を受け取ったら、
Retry-Afterヘッダーの秒数を確認し、それまで再試行を待つのがマナーです。無視して連打するとブロックされる可能性があります。 - 5xx 系のエラーはクライアント側のバグではなくサーバー側の問題を示すため、まずは自分のリクエスト内容よりもサーバーの稼働状況やログを確認しましょう。
- ブラウザの開発者ツールの Network タブでは、各リクエストのステータスコードが色分け表示されます。このツールと組み合わせるとデバッグが効率化します。
よくある質問
-i オプション、または本ツールのルックアップ機能にコード番号を入力することで意味を確認できます。
余談ですが ― HTTP ステータスコードの歴史
HTTP ステータスコードの体系は、1996 年に公開された HTTP/1.0 の仕様書 RFC 1945 で初めて標準化されました。その後 1999 年の HTTP/1.1(RFC 2616)で 4xx・5xx 系を含む現在のコード体系がほぼ確立し、2014 年の RFC 7231、2022 年の RFC 9110 へと引き継がれています。
418 I'm a teapot(私はティーポットです)というジョークコードが有名ですが、これは 1998 年のエイプリルフールに公開された「HTCPCP(Hyper Text Coffee Pot Control Protocol)」という冗談規格に由来します。ティーポットにコーヒーを淹れさせようとすると返される、という設定でした。
ステータスコードの先頭桁が意味の大分類を表すという設計は、電話網の応答コードや、後の SMTP・FTP のリターンコード体系にも影響を与えたと言われています。1xx が「情報」、2xx が「成功」という分類のシンプルさは、30 年近く経った今もほぼそのまま使われています。
451 Unavailable For Legal Reasons は 2015 年に RFC 7725 で正式に標準化された比較的新しいコードです。コード番号の「451」は、検閲をテーマにした SF 小説『華氏451度』(レイ・ブラッドベリ著)へのオマージュとして選ばれました。