ネットワーク

HTTP ステータスコード一覧

HTTP ステータスコード(1xx〜5xx)を一覧表示。各コードの意味・よくある原因・対処法まで解説した開発者向けリファレンスです。コード番号を入力する詳細検索付き。

HTTP ステータスコード一覧表
コード 名称 意味 よくある原因
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 タブでは、各リクエストのステータスコードが色分け表示されます。このツールと組み合わせるとデバッグが効率化します。

よくある質問

どちらも「見つからない」ことを示しますが、404 は一時的な不在も含む一般的な未検出、410 は「恒久的に削除され今後も存在しない」ことを明示する強いシグナルです。意図的に削除したコンテンツには 410 を使うと SEO 上も意図が伝わりやすくなります。

301(恒久的)は旧URLの検索評価をほぼそのまま新URLに引き継ぎます。302(一時的)は検索エンジンが旧URLを正規URLとみなし続けるため、恒久的な移転には必ず301を使うべきです。

401 Unauthorized は「認証されていない」(誰かを証明できていない)ことを示し、403 Forbidden は「認証はできているが権限がない」ことを示します。名称に反し、401は認証、403は認可(権限)のエラーです。

502 はリバースプロキシやロードバランサーが背後のアプリケーションサーバーから正しい応答を受け取れなかったことを示します。まずアプリケーションサーバーのプロセスが起動しているか、クラッシュしていないかを確認しましょう。

ブラウザの開発者ツールの Network タブ、curl コマンドの -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度』(レイ・ブラッドベリ著)へのオマージュとして選ばれました。