HTTPステータスコード一覧 - 全コードの意味と使い方リファレンス

HTTPステータスコードは、サーバーがクライアントのリクエストをどのように処理したかを示す3桁の数値。先頭の数字でカテゴリが決まる。

カテゴリ範囲意味
1xx100〜199情報(Informational)
2xx200〜299成功(Success)
3xx300〜399リダイレクト(Redirection)
4xx400〜499クライアントエラー(Client Error)
5xx500〜599サーバーエラー(Server Error)

1xx:情報

リクエストを受け取り、処理を継続中であることを示す。通常のWebアプリケーション開発で直接扱うことは少ない。

コード名称説明
100Continueリクエストの最初の部分を受け取った。クライアントは残りを送り続けてよい
101Switching Protocolsプロトコルの切り替えを承認(WebSocket接続確立時など)
102Processingリクエストを受け取り、処理中(WebDAV)
103Early Hintsリンクヘッダーを事前送信してリソースのプリロードを促す

2xx:成功

リクエストが正常に処理されたことを示す。

コード名称説明
200OKリクエスト成功。最も一般的な成功レスポンス
201Createdリソースの作成に成功(POSTでリソース作成時など)
202Acceptedリクエストを受け付けたが、処理は完了していない(非同期処理)
204No Content成功したが、返すコンテンツがない(DELETEやPATCH後など)
206Partial Content部分的なコンテンツを返す(Range リクエストへの応答)

API設計での使い分け

GET    /users/1    → 200 OK(ユーザー情報を返す)
POST   /users      → 201 Created(ユーザーを作成して返す)
PUT    /users/1    → 200 OK または 204 No Content
PATCH  /users/1    → 200 OK または 204 No Content
DELETE /users/1    → 204 No Content

3xx:リダイレクト

クライアントが別のURLへ再リクエストする必要があることを示す。Location ヘッダーで転送先URLを指定する。

コード名称説明
301Moved PermanentlyURLが恒久的に変更された。SEOの評価も転送される
302FoundURLが一時的に変更された。SEOの評価は転送されない
303See Other別URLをGETで参照せよ。POSTの処理後リダイレクトに使われる
304Not Modifiedキャッシュが有効。サーバーのコンテンツは変更されていない
307Temporary Redirect一時的なリダイレクト。元のHTTPメソッドを維持する
308Permanent Redirect恒久的なリダイレクト。元のHTTPメソッドを維持する

301 vs 302 vs 307 vs 308

コード恒久メソッド維持主な用途
301❌(GETに変わることが多い)URL変更・旧URL廃止
302❌(GETに変わることが多い)一時的なメンテナンス
307POSTを維持したい一時リダイレクト
308POSTを維持した恒久リダイレクト

4xx:クライアントエラー

クライアント側に問題があることを示す。

コード名称説明
400Bad Requestリクエストの構文が不正。バリデーションエラーなど
401Unauthorized認証が必要(未ログイン状態)
403Forbidden認証済みだがアクセス権がない
404Not Foundリソースが見つからない
405Method Not Allowed指定のHTTPメソッドは許可されていない
406Not AcceptableAccept ヘッダーに対応するコンテンツ形式がない
408Request Timeoutリクエストがタイムアウト
409Conflictリソースの状態と競合している(重複登録など)
410Goneリソースが恒久的に削除された(404との違いは意図的な削除)
411Length RequiredContent-Length ヘッダーが必要
413Content Too Largeリクエストボディが大きすぎる
414URI Too LongURLが長すぎる
415Unsupported Media TypeContent-Type が非対応
422Unprocessable Content構文は正しいが、セマンティクスが誤っている(バリデーションエラーに使われることも)
429Too Many Requestsレート制限超過

401 vs 403

  • 401 Unauthorized:誰かわからない(認証されていない)→ ログインしてください
  • 403 Forbidden:誰かはわかっているがアクセス権がない → アクセス拒否

認証されていないユーザーに対してリソースの存在を隠したい場合は 403 ではなく 404 を返すことがある(セキュリティ上の理由)。


5xx:サーバーエラー

サーバー側に問題があることを示す。

コード名称説明
500Internal Server Errorサーバー内部の予期しないエラー
501Not Implementedリクエストされたメソッドや機能が未実装
502Bad Gateway上流サーバーから不正なレスポンスを受け取った
503Service Unavailableサーバーが一時的に利用不可(メンテナンス中、過負荷など)
504Gateway Timeout上流サーバーからのレスポンスがタイムアウト
505HTTP Version Not Supported使用されているHTTPバージョンが非対応

500 / 502 / 503 / 504 の使い分け

コード原因
500アプリケーション自体のエラー(例外、バグ)
502リバースプロキシの背後のサーバーが壊れたレスポンスを返した
503サーバーが一時的にダウン、キャパシティオーバー
504リバースプロキシが上流サーバーからの応答を待ちきれなかった

よく使うコードまとめ

実務でよく使われるコードに絞った早見表。

コード名称典型的な用途
200OKGET成功、更新成功
201CreatedPOST成功(リソース作成)
204No ContentDELETE成功
301Moved Permanently旧URLからの恒久リダイレクト
304Not Modifiedキャッシュ利用
400Bad Requestバリデーションエラー
401Unauthorized未認証
403Forbidden権限なし
404Not Foundリソースなし
409Conflict重複・競合
422Unprocessable Content意味的なバリデーションエラー
429Too Many Requestsレート制限
500Internal Server Errorサーバー側バグ
503Service Unavailableメンテナンス・過負荷

参考リンク