HTTPステータスコード リファレンス
IANAレジストリにあるすべてのHTTPステータスコード(100〜511)を検索できる一覧です。理由句、定義しているRFC、使われる場面の分かりやすい解説を掲載しています。
- 100ContinueRFC 9110
サーバーはリクエストヘッダーを受け取りました。クライアントはボディの送信を続けられます(Expect: 100-continue への応答)。
- 101Switching ProtocolsRFC 9110
サーバーが Upgrade ヘッダーの要求どおりにプロトコルを切り替えます(例: WebSocket)。
- 102ProcessingRFC 2518
WebDAV: サーバーは時間のかかるリクエストを処理中で、まだ応答はありません。
- 103Early HintsRFC 8297
最終レスポンスの前に送られ、ブラウザーが Link ヘッダーのリソースを先読みできるようにします。
- 104Upload Resumption Supporteddraft-ietf-httpbis-resumable-upload暫定登録
再開可能アップロードのドラフト: 中断したアップロードの再開に対応しています。
- 200OKRFC 9110
リクエストは成功しました。ボディには要求したリソースか処理結果が入ります。
- 201CreatedRFC 9110
新しいリソースが作成されました。その URL は通常 Location ヘッダーに示されます。
- 202AcceptedRFC 9110
リクエストは受け付けられましたが、処理はまだ完了していません(非同期ジョブ)。
- 203Non-Authoritative InformationRFC 9110
成功しましたが、内容は変換プロキシによって変更されています。
- 204No ContentRFC 9110
成功・ボディなし。DELETE やデータ保存でよく使われます。
- 205Reset ContentRFC 9110
成功。クライアントはリクエストを送ったフォームや画面をリセットすべきです。
- 206Partial ContentRFC 9110
Range ヘッダーの指定どおり、リソースの一部だけを返します(レジューム可能なダウンロード、動画のシーク)。
- 207Multi-StatusRFC 4918
WebDAV: ボディに複数リソースそれぞれのステータスコードが含まれます。
- 208Already ReportedRFC 5842
WebDAV: バインディングのメンバーはこのレスポンス内で既に列挙済みです。
- 226IM UsedRFC 3229
差分エンコーディング: リソースにインスタンス操作を適用した結果を返します。
- 300Multiple ChoicesRFC 9110
複数の表現が利用可能で、クライアントが選択できます。
- 301Moved PermanentlyRFC 9110
リソースは Location の URL へ恒久的に移動しました。検索エンジンは評価を引き継ぎます。クライアントは POST を GET に変えることがあります。
- 302FoundRFC 9110
リソースは一時的に別の URL にあります。元の URL を使い続けてください。クライアントは POST を GET に変えることがあります。
- 303See OtherRFC 9110
別の URL を GET で参照してください。フォーム送信後によく使われます(Post/Redirect/Get パターン)。
- 304Not ModifiedRFC 9110
キャッシュは引き続き有効です(If-None-Match / If-Modified-Since による条件付きリクエスト)。ボディは送られません。
- 305Use ProxyRFC 9110非推奨
非推奨: リソースへはプロキシ経由でアクセスする必要がありました。セキュリティ上の理由で使われません。
- 306(Unused)RFC 9110予約済み・未使用
予約済み。以前のドラフトで使われ、現在は使用されていません。
- 307Temporary RedirectRFC 9110
メソッドとボディを保ったままの一時的なリダイレクト(POST は POST のまま)。
- 308Permanent RedirectRFC 9110
メソッドとボディを保ったままの恒久的なリダイレクト(POST は POST のまま)。
- 400Bad RequestRFC 9110
リクエストの形式が不正なため処理できません(構文エラー、無効なパラメーター、無効な JSON など)。
- 401UnauthorizedRFC 9110
認証が必要か、認証に失敗しました。レスポンスには WWW-Authenticate ヘッダーが含まれます。
- 402Payment RequiredRFC 9110
将来のために予約。一部の API は支払いやクォータの問題に使っています。
- 403ForbiddenRFC 9110
サーバーはリクエストを理解しましたが拒否しています。再ログインしても解決しません。
- 404Not FoundRFC 9110
この URL にリソースは存在しません(またはサーバーが存在を明かしたくない)。
- 405Method Not AllowedRFC 9110
このリソースではその HTTP メソッドは使えません。Allow ヘッダーに有効なメソッドが示されます。
- 406Not AcceptableRFC 9110
クライアントの Accept ヘッダーに合う表現がありません。
- 407Proxy Authentication RequiredRFC 9110
401 と同様ですが、プロキシでの認証が必要です。
- 408Request TimeoutRFC 9110
クライアントのリクエスト送信に時間がかかりすぎたため、サーバーが接続を閉じました。
- 409ConflictRFC 9110
リクエストがリソースの現在の状態と競合しています(編集の競合、重複など)。
- 410GoneRFC 9110
リソースは恒久的に削除され、戻ることはありません。404 より明確な意味を持ちます。
- 411Length RequiredRFC 9110
サーバーは Content-Length ヘッダーを必要としています。
- 412Precondition FailedRFC 9110
If-Match や If-Unmodified-Since などの前提条件を満たしていません(楽観的ロック)。
- 413Content Too LargeRFC 9110
リクエストボディがサーバーの受け付けるサイズを超えています(アップロード上限)。
- 414URI Too LongRFC 9110
URL がサーバーで処理できる長さを超えています。
- 415Unsupported Media TypeRFC 9110
ボディのメディアタイプ(Content-Type)はサポートされていません。
- 416Range Not SatisfiableRFC 9110
要求された Range に応えられません(例: ファイルの末尾より後から始まっている)。
- 417Expectation FailedRFC 9110
Expect ヘッダーの期待に応えられません。
- 418(Unused)RFC 9110予約済み・未使用
予約済み・未使用。エイプリルフールの RFC 2324「I’m a teapot」で知られています。
- 421Misdirected RequestRFC 9110
このホストに応答できないサーバーにリクエストが届きました(再利用された HTTP/2 接続など)。
- 422Unprocessable ContentRFC 9110
構文は正しいものの、内容が意味的に不正です(バリデーションエラー)。
- 423LockedRFC 4918
WebDAV: リソースはロックされています。
- 424Failed DependencyRFC 4918
WebDAV: 依存していた処理が失敗したため、このリクエストも失敗しました。
- 425Too EarlyRFC 8470
リプレイされる恐れのあるリクエストの処理を拒否します(TLS 1.3 の early data)。
- 426Upgrade RequiredRFC 9110
クライアントは Upgrade ヘッダーに示された別のプロトコルへ切り替える必要があります。
- 428Precondition RequiredRFC 6585
更新の消失を防ぐため、サーバーは条件付きリクエスト(If-Match)を要求しています。
- 429Too Many RequestsRFC 6585
一定時間内のリクエストが多すぎます(レート制限)。Retry-After で再試行できる時期が示されます。
- 431Request Header Fields Too LargeRFC 6585
リクエストヘッダー(または Cookie など特定のヘッダー)が大きすぎます。
- 451Unavailable For Legal ReasonsRFC 7725
裁判所の命令や検閲など、法的な理由でリソースを提供できません。
- 500Internal Server ErrorRFC 9110
サーバーで予期しない一般的なエラーが発生しました。
- 501Not ImplementedRFC 9110
必要な機能をサーバーがサポートしていません(未知のメソッドなど)。
- 502Bad GatewayRFC 9110
ゲートウェイまたはプロキシが上 流サーバーから無効な応答を受け取りました。
- 503Service UnavailableRFC 9110
サーバーが一時的に過負荷かメンテナンス中です。Retry-After が送られることがあります。
- 504Gateway TimeoutRFC 9110
ゲートウェイまたはプロキシが上流サーバーから時間内に応答を得られませんでした。
- 505HTTP Version Not SupportedRFC 9110
リクエストで使われた HTTP バージョンはサポートされていません。
- 506Variant Also NegotiatesRFC 2295
コンテンツネゴシエーションの設定ミス: 選ばれたバリアント自体がネゴシエーションを行っています。
- 507Insufficient StorageRFC 4918
WebDAV: リクエストを完了するためのストレージが不足しています。
- 508Loop DetectedRFC 5842
WebDAV: 処理中に無限ループを検出しました。
- 510Not Extended (OBSOLETED)RFC 2774非推奨
廃止: リクエストにさらなる拡張が必要でした(HTTP Extension Framework)。
- 511Network Authentication RequiredRFC 6585
ネットワークを利用するには認証が必要です(Wi-Fi のキャプティブポータルなど)。
HTTPステータスコードとは?
IANAに登録されている64種類すべてのHTTPステータスコードを、100 Continueから511 Network Authentication Requiredまで、検索できる形でまとめた完全なリファレンスです。各項目には、正式な理由句、定義しているRFC、その意味とサーバーが返す場面の簡単な説明が載っており、非推奨や未使用のコードにはその旨の印があります。
HTTPステータスコードの使い方
- 検索ボックスに、コード(
404)、コードの一部(30)、単語(redirect、timeout)を入力します。 - クラスで絞り込みます。1xx 情報、2xx 成功、3xx リダイレクト、4xx クライアントエラー、5xx サーバーエラーです。
- 各コードの理由句、RFC、解説を確認します。
例
418
418 (Unused) · RFC 9110 · reserved and unused; known from the "I’m a teapot" April Fools’ RFC 2324.
HTTPステータスコードを使うべき場面
APIのデバッグ、サーバーログの読み取り、自分のエンドポイントがどのステータスを返すかを決めるときに使います。特定の製品が使う非公式のコード(Nginxの499、Cloudflareの520〜527、IISの440)はレジストリにないため、掲載していません。
HTTPステータスコードの仕組み
一覧は、IANA HTTP Status Code Registryを反映しています。このレジストリは2022年以降、大部分がRFC 9110(HTTP Semantics)と、WebDAV(RFC 4918)やRFC 6585などの拡張によって定義されています。検索は、コードの先頭、英語の理由句、現在の言語での解説に対して、すべてローカルで一致を探します。
一般的な使用例
- APIエラーで、401と403、または400と422のどちらを使うかを決める。
- ログに出てきた425 Too Earlyや421 Misdirected Requestを調べる。
- 削除したページには404より410 Goneが適している理由を、クライアントに説明する。
- リダイレクトでPOSTメソッドを維持する必要があるときに、307か308を選ぶ。
よくある質問
401と403の違いは何ですか。
401は未認証(または認証情報が失敗した)ことを意味し、WWW-Authenticateが付きます。403は、サーバーがあなたが誰かを把握したうえで、許可されていないことを意味します。
418 I'm a teapotは実在のステータスコードですか。
レジストリでは予約済みで、RFC 9110では未使用とされています。1998年のエイプリルフールのRFCから、多くのライブラリが実装しているためです。
422が現在Unprocessable Contentと呼ばれるのはなぜですか。
RFC 9110で、WebDAVからコアのHTTPに移され、Unprocessable Entityから名称が変更されたためです。