一覧表で一気に確認!HTTPステータスコード・チートシート

SEO

ネットワーク関係でいつもつきまとうHTTPステータスコード、「なんだっけ、これ」となることが多いのでまとめました。

HTTPステータスコードについて

この記事に辿り着いた方で「ナニソレ」と言う方もいないと思いますが、ステータスコードは、超ザックリいえばこんな感じで定義されたものです。

  • 形式:3桁の数字
  • 1桁目:レスポンスのクラス(1-5)
  • 2-3桁目:詳細な状態
  • RFC定義:RFC 2616, 7231, 6585等で標準化

以下、具体的な内容をまとめました。

1xx(100番台):情報レスポンス

コード名前説明実務での用途・対応
100Continueリクエストの前半部分を受け付けた・大容量ファイルアップロード時の継続確認
・クライアントの続行許可判断用
101Switching Protocolsプロトコル切り替え承諾・WebSocketへの切り替え
・HTTP/2への切り替え時
102Processing (WebDAV)処理継続中・長時間処理での進捗表示
・タイムアウト防止用
103Early Hints予備レスポンス・リソースのプリロード指示
・レンダリング最適化用

2xx(200番台):成功レスポンス

コード名前説明実務での用途・対応
200OKリクエスト成功・通常のリクエスト成功時
・正常系の基本レスポンス
201Createdリソース作成成功・POST成功時
・新規レコード作成時
202Accepted処理受付完了(結果は未確定)・非同期処理開始時
・バッチ処理登録時
203Non-Authoritative Information変更された情報での成功・プロキシでの変更を含む応答
・キャッシュ経由の応答
204No Content成功だが返信内容なし・DELETE成功時
・更新処理完了時
205Reset Content成功、クライアントのリセット要求・フォームクリア指示
・画面リフレッシュ要求
206Partial Content部分的な成功・範囲リクエスト成功時
・動画の部分再生時
207Multi-Status (WebDAV)複数ステータスの統合・複数リソースの一括操作結果
・WebDAV操作結果
208Already Reported (WebDAV)既報告内容の重複回避・WebDAVでのバインディング報告
・重複レポート抑制用
226IM Used (HTTP Delta encoding)差分エンコーディング使用・差分転送時
・帯域最適化時

3xx(300番台):リダイレクト

コード名前説明実務での用途・対応
300Multiple Choices複数のリソース候補が存在・複数フォーマット選択時
・言語選択時
301Moved Permanently恒久的な移動・サイト移転時
・URL構造変更時
302Found一時的な移動・メンテナンス時転送
・一時的なリダイレクト
303See Other別URLでの結果参照指示・POST後のGETリダイレクト
・処理結果確認画面へ誘導
304Not Modified未更新(キャッシュ利用可)・条件付きGETの更新なし
・キャッシュ有効活用
305Use Proxy (非推奨)プロキシ経由要求※セキュリティ上の理由で非推奨
306(Unused)未使用※将来の使用のために予約
307Temporary Redirect一時的な移動(メソッド保持)・負荷分散時
・メソッド維持必須時
308Permanent Redirect恒久的な移動(メソッド保持)・APIエンドポイント移動
・永続的なメソッド維持

4xx(400番台):クライアントエラー

コード名前説明実務での用途・対応
400Bad Request不正なリクエスト・パラメータ不正
・構文エラー
401Unauthorized認証必要・未ログイン
・認証切れ
402Payment Required支払い必要・有料サービス
・支払い要求
403Forbiddenアクセス権限なし・権限不足
・IP制限
404Not Foundリソース非存在・存在しないページ
・削除済みコンテンツ
405Method Not Allowed許可されないメソッド・POSTのみのURLにGET
・許可外メソッド
406Not Acceptable受入不可能な応答・対応不可能なAcceptヘッダ
・非対応フォーマット
407Proxy Authentication Requiredプロキシ認証必要・プロキシ認証要求
・中間認証必要
408Request Timeoutリクエスト待機時間超過・クライアント処理遅延
・通信タイムアウト
409Conflictリソースの競合・同時編集衝突
・楽観的ロック違反
410Goneリソース永久削除・完全削除済み
・アーカイブ済み
411Length RequiredContent-Length必須・サイズ指定必須
・転送量確認用
412Precondition Failed前提条件不一致・条件付きリクエスト失敗
・If-Match不一致
413Payload Too Largeリクエスト容量超過・ファイルサイズ超過
・データ量制限超過
414URI Too LongURIが長すぎる・GET文字数制限超過
・URL長制限違反
415Unsupported Media Type未対応のメディア形式・非対応ファイル形式
・Content-Type不正
416Range Not Satisfiable範囲指定不可・範囲外リクエスト
・部分取得範囲エラー
417Expectation FailedExpectヘッダ非対応・Expectヘッダ非対応
・事前条件不成立
418I’m a teapot(エイプリルフール用)・HTCPCP仕様のジョーク
・実運用では未使用
421Misdirected Request不正な接続先・SNI不一致
・接続先サーバー不正
422Unprocessable Entity処理不能なエンティティ・バリデーションエラー
・意味的なエラー
423Locked (WebDAV)リソースロック中・編集ロック中
・アクセスロック
424Failed Dependency (WebDAV)依存関係による失敗・関連処理の失敗
・依存処理エラー
425Too Earlyリプレイ攻撃の危険性・早すぎるリクエスト
・TLS暗号化前の通信
426Upgrade Requiredプロトコル更新必要・TLS必須
・プロトコル変更要求
428Precondition Required前提条件必須・条件付きリクエスト必須
・If-Match必須
429Too Many Requestsリクエスト過多・レート制限超過
・アクセス制限
431Request Header Fields Too Largeヘッダーが大きすぎる・ヘッダーサイズ超過
・Cookie過多
451Unavailable For Legal Reasons法的理由による利用不可・規制対象コンテンツ
・法的削除要請

ちなみに、非標準のステータスコードとして、Nginxの独自コードが存在します。

コード名前説明実務での用途・対応
499Client Closed Request (Nginx)クライアントが接続を切断・ユーザーによる読み込み中断
・クライアントのタイムアウト
・モバイル通信の切断
・ブラウザバック/閉じる操作

5xx(500番台):サーバーエラー

コード名前説明実務での用途・対応
500Internal Server Errorサーバー内部エラー・予期せぬエラー
・実装バグ
501Not Implemented未実装機能・対応予定機能
・未実装メソッド
502Bad Gatewayゲートウェイエラー・バックエンドエラー
・upstream障害
503Service Unavailableサービス利用不可・メンテナンス中
・過負荷
504Gateway Timeoutゲートウェイタイムアウト・バックエンド遅延
・内部処理タイムアウト
505HTTP Version Not Supported非対応HTTPバージョン・HTTPバージョン非対応
・プロトコルバージョンエラー
506Variant Also Negotiates内部設定ミス・コンテンツネゴシエーション循環
・設定ミス
507Insufficient Storage (WebDAV)ストレージ容量不足・ディスク容量不足
・クォータ超過
508Loop Detected (WebDAV)無限ループ検出・WebDAV処理ループ
・依存関係循環
510Not Extended拡張必要・必要な拡張未対応
・追加設定必要
511Network Authentication Requiredネットワーク認証必要・キャプティブポータル
・ネットワーク認証要求

こちらも499同様、非標準のステータスコードとして、Nginxの独自コードが存在します。

コード名前説明実務での用途・対応
599Network Connect Timeout Error (Nginx)ネットワーク接続タイムアウト・upstreamサーバーへの接続タイムアウト
・ネットワーク障害
・バックエンドサーバーの過負荷
・DNS解決失敗

実装時のポイント

以下、メモ書きです。

1. セキュリティ関連

  • 401/403の使い分け
    • 401:認証が必要
    • 403:認証済みだが権限なし
  • 404の使用
    • セキュリティ上、403を404として返す場合も

2. パフォーマンス最適化

  • 304の積極活用
  • 206による部分取得の実装
  • 429によるレート制限の実装

3. 運用監視のポイント

  • 5xxの監視は必須
  • 4xxの急増にも注意
  • タイムアウト系(408, 504)の傾向分析

4. クライアントへの配慮

  • わかりやすいエラーページ
  • 適切なリダイレクト設計
  • レスポンスヘッダーの適切な設定

5. 障害対応

  1. ログの確認
  2. エラーの切り分け
  3. 原因の特定
  4. 一時対応
  5. 恒久対応

補足事項

  • すべてのステータスコードを実装する必要はない
  • サービスに必要なコードを適切に選択
  • セキュリティとユーザビリティのバランスを考慮
  • 必要に応じて独自のエラーコード体系を検討

スポンサーリンク

SEO

Posted by このめ