コンテンツにスキップ

HTTPステータスコード一覧

Web開発で頻繁に遭遇するHTTPステータスコードを分類別にまとめました。APIの設計やデバッグ、エラーハンドリングの実装時にご活用ください。

HTTPステータスコードとは

HTTPステータスコードは、クライアント(ブラウザやAPIクライアント)からのリクエストに対してサーバーが返すレスポンスの状態を示す3桁の数値です。最初の1桁でカテゴリが決まり、1xx〜5xxの5つのクラスに分類されます。適切なステータスコードを返すことは、RESTful APIの設計において非常に重要です。

1xx 2xx 3xx 4xx 5xx 1xx Informational (100, 101, 103) 2xx Success (200, 201, 204) 3xx Redirection (301, 302, 304) 4xx Client Error (400, 404, 422) 5xx Server Error (500, 502, 503)
図: HTTP ステータスコードの 5 分類

1xx:情報レスポンス(Informational)

リクエストを受け取り、処理を継続中であることを示します。通常、ブラウザが自動的に処理するため開発者が直接扱うことは少ないです。

コード名称説明
100Continueリクエストの最初の部分を受け取った。クライアントはリクエストの続行が可能
101Switching Protocolsプロトコルの切り替え要求を受理。WebSocket接続時に使用
103Early Hints最終レスポンスの前にリソースのプリロードを開始するためのヒント

2xx:成功レスポンス(Success)

リクエストが正常に受理・処理されたことを示します。API開発で最もよく使うカテゴリです。

コード名称説明主な用途
200OKリクエスト成功GET / PUT / PATCH の成功時
201Createdリクエスト成功、新しいリソースが作成されたPOST でリソース作成成功時
202Acceptedリクエストを受理したが処理は完了していない非同期処理の受付時
204No Contentリクエスト成功、返すコンテンツなしDELETE 成功時、PUT で更新のみの場合
206Partial Content範囲リクエストへの部分レスポンス大容量ファイルのダウンロード再開時

3xx:リダイレクション(Redirection)

リクエストの完了には追加のアクション(リダイレクト先へのアクセスなど)が必要であることを示します。SEOやURL移行時に重要です。

コード名称説明主な用途
301Moved Permanentlyリソースが恒久的に移動したURL変更、ドメイン移行。SEO評価を引き継ぐ
302Found一時的に別のURLへリダイレクトメンテナンス時の一時転送
303See OtherGETメソッドで別のURLを参照POST処理後のリダイレクト(PRGパターン)
304Not Modifiedリソースが変更されていないブラウザキャッシュの利用。帯域の節約
307Temporary Redirect一時的リダイレクト(メソッド維持)HTTP→HTTPSの一時転送
308Permanent Redirect恒久的リダイレクト(メソッド維持)APIエンドポイントの恒久移動

4xx:クライアントエラー(Client Error)

クライアント側に問題があることを示します。リクエストの内容や認証情報の不備が原因です。

コード名称説明主な用途
400Bad Requestリクエストの構文が不正バリデーションエラー、不正なJSON
401Unauthorized認証が必要未ログイン、トークン切れ
403Forbiddenアクセス権限がない認証済みだがリソースへのアクセス不可
404Not Foundリソースが見つからない存在しないURL、削除済みリソース
405Method Not Allowed許可されていないHTTPメソッドGETのみのエンドポイントにPOST送信
408Request Timeoutリクエストがタイムアウトクライアントからのデータ送信が遅い場合
409Conflictリソースの競合重複データ登録、楽観的ロックの衝突
413Payload Too Largeリクエストボディが大きすぎるファイルアップロード上限超過
415Unsupported Media Typeサポートされていないメディアタイプ不正なContent-Type
422Unprocessable Entity構文は正しいが意味的に処理不能バリデーションエラー(詳細)
429Too Many Requestsレートリミット超過API呼び出し回数制限

5xx:サーバーエラー(Server Error)

サーバー側で処理に失敗したことを示します。サーバーの設定不備やアプリケーションのバグが原因です。

コード名称説明主な用途
500Internal Server Errorサーバー内部エラー未処理の例外、アプリケーションバグ
501Not Implementedサーバーが未対応の機能未実装のAPIエンドポイント
502Bad Gatewayゲートウェイが不正なレスポンスを受信リバースプロキシの上流サーバーが応答不能
503Service Unavailableサービス利用不可メンテナンス中、過負荷状態
504Gateway Timeoutゲートウェイのタイムアウト上流サーバーからの応答がタイムアウト

よくある質問

401と403の違いは?

401 Unauthorizedは認証が必要であることを示し、ログインやトークン提供を促します。403 Forbiddenは認証済みだがリソースへのアクセス権限がないことを示します。例えば、一般ユーザーが管理者専用ページにアクセスした場合は403が適切です。

301と308の違いは?

どちらも恒久的リダイレクトですが、301はリダイレクト時にHTTPメソッドがGETに変更される可能性があります。308はリクエストメソッドを維持したまま転送します。POST リクエストのリダイレクト先でもPOSTメソッドを維持したい場合は308を使用します。

413エラーが出たら?

ファイルアップロード時に413 Payload Too Largeが返された場合は、サーバー(Nginx: client_max_body_size、Apache: LimitRequestBody)やPHP(upload_max_filesizepost_max_size)の設定を確認してください。DevLabのしきい値テスト用ファイルを使って上限値を検証できます。

❓ よくある質問

どのステータスコードが SEO に影響しますか?
評価を移すのは 301 と 308 で、302 と 307 は一時的として扱われ元 URL が保持されます。404 と 410 はインデックスから外れますが、410 のほうが再クロールが早く止まります。503 は一時的な障害として扱われ、Retry-After を添えるとクロール頻度の調整に使われます。存在しないページに 200 を返すとソフト 404 として扱われ、品質評価に響きます。
4xx と 5xx はどちらの責任ですか?
4xx はリクエスト側に原因があり、同じリクエストを繰り返しても結果は変わりません。5xx はサーバー側の問題で、時間をおけば成功する可能性があります。この区別はリトライ設計に直結し、4xx は即座に諦めて記録し、5xx は指数バックオフで再試行するのが基本形です。ただし 429 は 4xx でも Retry-After に従って再試行します。
独自のステータスコードを定義してもいいですか?
やめてください。中間のプロキシ・CDN・HTTP クライアントは未知のコードを同じ番台の x00 として扱うと決まっており、499 は 400 と同じ扱いになります。つまり独自コードは伝わらないうえ、細かい情報も失われます。区別が必要なら標準コードを選び、詳細はレスポンス本文(RFC 9457 の Problem Details など)に載せてください。