nicetool.dev logo

HTTPステータスコード

番号や名前で検索、またはクラスで絞り込めます。各コードは仕様書にリンクしています。

1xx 情報

リクエストを受け付け、処理を継続中です。アプリケーションのコードで見ることはまれです。

100

Continue

サーバーがリクエストヘッダーを受け取り、クライアントは本文を送ってよい状態です。大きなアップロードの前に"Expect: 100-continue"と組み合わせて使います。

RFC 9110
101

Switching Protocols

クライアントの要求どおりプロトコルを切り替えます。例: HTTP/1.1からWebSocketへ。

RFC 9110
102

Processing

WebDAV: リクエストを受理し処理中のため、クライアントはタイムアウトしないでください。

RFC 2518
103

Early Hints

最終レスポンスの準備中にLinkヘッダーを先に送り、ブラウザにCSSやフォントを先読みさせます。

RFC 8297

2xx 成功

リクエストを受け付け、理解し、受理しました。

200

OK

リクエストは成功しました。本文には要求したリソースまたは処理結果が含まれます。

RFC 9110
201

Created

新しいリソースが作成されました。通常はPOSTの後で、Locationヘッダーがその場所を示します。

RFC 9110
202

Accepted

リクエストは処理のため受理されましたが、まだ完了していません。キューに入ったバックグラウンド処理など。

RFC 9110
203

Non-Authoritative Information

成功ですが、変換を行うプロキシによって内容が変更されており、元のサーバーの応答とは異なります。

RFC 9110
204

No Content

成功したが返す本文はありません。DELETEや、ページを再読み込みしないフォーム保存でよく使います。

RFC 9110
205

Reset Content

成功。クライアントはリクエストを送ったフォームや表示をリセットしてください。

RFC 9110
206

Partial Content

Rangeヘッダーの指定どおり、リソースの一部だけを返します。ダウンロードの再開や動画のシークに使われます。

RFC 9110
207

Multi-Status

WebDAV: 本文に複数の操作に対する複数のステータスコードが含まれます。

RFC 4918
208

Already Reported

WebDAV: レスポンス内で既に列挙したメンバーは繰り返しません。

RFC 5842
226

IM Used

サーバーがレスポンスに差分エンコーディングを適用しました。ほとんど使われません。

RFC 3229

3xx リダイレクト

リクエストを完了するには、通常は別のURLへの移動など、追加の操作が必要です。

300

Multiple Choices

複数の表現(言語や形式など)があり、クライアントがどれかを選ぶ必要があります。

RFC 9110
301

Moved Permanently

リソースはLocationに示す新しいURLへ恒久的に移動しました。検索エンジンは評価を新URLに引き継ぎます。

RFC 9110
302

Found

リソースは一時的に別のURLにあります。クライアントは元のURLを使い続け、ブラウザはPOSTをGETに変えることがあります。

RFC 9110
303

See Other

結果は別のURLにGETで取得できます。フォームのPOST後の再送信防止(Post/Redirect/Get)に使います。

RFC 9110
304

Not Modified

キャッシュがまだ有効なため(If-None-MatchやIf-Modified-Sinceが一致)、本文は送られません。

RFC 9110
307

Temporary Redirect

メソッドと本文を維持する一時的なリダイレクト。POSTはPOSTのままです。

RFC 9110
308

Permanent Redirect

メソッドと本文を維持する恒久的なリダイレクト。301の厳密版です。

RFC 9110

4xx クライアントエラー

リクエストに問題があります。構文の誤り、認証なし、権限なし、存在しないリソースなど。

400

Bad Request

リクエストの形式が不正なため処理できません。構文エラー、壊れたJSON、誤ったパラメーターなど。

RFC 9110
401

Unauthorized

認証がない、または無効です。レスポンスのWWW-Authenticateヘッダーでログイン方法が示されます。

RFC 9110
402

Payment Required

将来のデジタル決済のために予約されています。サブスクリプションや利用枠の支払いが必要なときに使うAPIもあります。

RFC 9110
403

Forbidden

サーバーは相手が誰か分かっていますが、権限がないため拒否しています。再ログインしても解決しません。

RFC 9110
404

Not Found

リソースが存在しないか、サーバーが存在を明かしたくない場合です。

RFC 9110
405

Method Not Allowed

このURLではそのHTTPメソッドに対応していません。例: 読み取り専用リソースへのPOST。Allowヘッダーに有効なメソッドが示されます。

RFC 9110
406

Not Acceptable

Acceptヘッダー(形式、言語、エンコーディング)に合うレスポンスを作れません。

RFC 9110
407

Proxy Authentication Required

401と同様ですが、先にプロキシで認証する必要があります。

RFC 9110
408

Request Timeout

クライアントがリクエストを送り終えるのを待ちすぎたため、サーバーが接続を閉じました。

RFC 9110
409

Conflict

編集の競合や一意キーの重複など、リクエストが現在の状態と矛盾しています。

RFC 9110
410

Gone

リソースは意図的に削除され、今後も復活しません。検索エンジンは404より早くインデックスから外します。

RFC 9110
411

Length Required

このリクエストにはContent-Lengthヘッダーが必要です。

RFC 9110
412

Precondition Failed

If-Matchなどの条件付きヘッダーが一致しませんでした。他人の変更の上書きを防ぐためによく使われます。

RFC 9110
413

Content Too Large

リクエスト本文がサーバーの上限を超えています(旧名"Payload Too Large")。

RFC 9110
414

URI Too Long

URLがサーバーの許容より長すぎます。GETのクエリ文字列に大量のデータを入れた場合によく起こります。

RFC 9110
415

Unsupported Media Type

本文の形式(Content-Type)に対応していません。例: JSON専用APIへのXML送信。

RFC 9110
416

Range Not Satisfiable

Rangeヘッダーがファイル内に存在しない範囲を要求しています。

RFC 9110
417

Expectation Failed

Expectヘッダーの要求にサーバーが応えられません。

RFC 9110
418

I'm a teapot

コーヒーポット制御プロトコルというエイプリルフールのジョーク。ティーポットはコーヒーを淹れられません。イースターエッグとして使うサイトもあります。

RFC 2324
421

Misdirected Request

このホストに応答できないサーバーにリクエストが届きました。再利用したHTTP/2接続が別のオリジンを指した場合などに起こります。

RFC 9110
422

Unprocessable Content

構文は正しいが内容が無効です。バリデーション規則に違反した場合など(旧名"Unprocessable Entity")。

RFC 9110
423

Locked

WebDAV: リソースがロックされています。

RFC 4918
424

Failed Dependency

WebDAV: 依存していた別のリクエストが失敗したため、このリクエストも失敗しました。

RFC 4918
425

Too Early

TLS 1.3のアーリーデータなど、再送される恐れのあるリクエストをサーバーは処理しません。

RFC 8470
426

Upgrade Required

クライアントはUpgradeヘッダーで示す別のプロトコルに切り替える必要があります。

RFC 9110
428

Precondition Required

更新の消失を防ぐため、サーバーは条件付きリクエスト(If-Match)を要求しています。

RFC 6585
429

Too Many Requests

一定時間内のリクエストが多すぎます(レート制限)。Retry-Afterで再試行の時期が分かります。

RFC 6585
431

Request Header Fields Too Large

ヘッダー全体、または1つのヘッダーが大きすぎます。肥大化したCookieが原因のことが多いです。

RFC 6585
451

Unavailable For Legal Reasons

検閲や裁判所命令など法的な理由でブロックされています。番号は小説『華氏451度』に由来します。

RFC 7725

5xx サーバーエラー

リクエストは正しく見えますが、サーバーが処理に失敗しました。

500

Internal Server Error

汎用エラー: サーバーで予期しない問題が起きました。サーバーのログを確認してください。

RFC 9110
501

Not Implemented

リクエストを実行するのに必要な機能やメソッドにサーバーが対応していません。

RFC 9110
502

Bad Gateway

ゲートウェイやプロキシが上流サーバーから不正な応答を受け取りました。Nginxの裏のアプリが落ちた場合など。

RFC 9110
503

Service Unavailable

過負荷またはメンテナンスのため、一時的にリクエストを処理できません。Retry-Afterで再開の時期が示されることがあります。

RFC 9110
504

Gateway Timeout

ゲートウェイやプロキシが上流サーバーから時間内に応答を得られませんでした。

RFC 9110
505

HTTP Version Not Supported

リクエストで使われたHTTPバージョンにサーバーが対応していません。

RFC 9110
506

Variant Also Negotiates

コンテンツネゴシエーションの設定ミス: 選ばれたバリアント自体がさらにネゴシエーションしようとしています。

RFC 2295
507

Insufficient Storage

WebDAV: リクエストの完了に必要なデータをサーバーが保存できません。

RFC 4918
508

Loop Detected

WebDAV: 処理中に無限ループを検出しました。

RFC 5842
510

Not Extended

リクエストにさらなる拡張が必要です。廃止扱いで、実際にはほぼ使われません。

RFC 2774
511

Network Authentication Required

クライアントは先にネットワークへのログインが必要です。ホテルや空港のWi-Fiのキャプティブポータルなど。

RFC 6585

HTTPステータスコードとは?

すべてのHTTPレスポンスは、リクエストの結果をクライアントに伝える3桁のステータスコードで始まります。先頭の数字がクラスを表し、1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラーです。ブラウザ、検索エンジン、キャッシュ、APIクライアント、監視ツールはこのコードに従って動作するため、適切なコードを選ぶことが重要です。301は新しいURLにSEO評価を引き継ぎますが302は引き継がず、503はクローラーに後で再訪するよう伝え、429はAPIクライアントに速度を落とすよう伝えます。コードは主にRFC 9110(HTTP Semantics)で定義され、一部は個別のRFCで定義されています。

機能

  • • IANAに登録された61個のステータスコード(100〜511)をすべて収録
  • • 各コードの意味と使いどころを分かりやすく解説
  • • 番号、名前、キーワードで即時検索、クラスで絞り込み
  • • 各コードを定義するRFCの該当箇所へ直接リンク
  • • クラスごとに色分け、#コードのアンカーでリンク共有可能

高速・オフラインでも快適

リファレンス全体がページに含まれているため、検索はサーバーへの通信なしにブラウザ内で即座に動作します。

検索できるリファレンス、トラッキングなし。

HTTPステータスコードの使い方

  1. 1

    検索欄に404のような番号、"gateway"のような名前、"redirect"のような単語を入力します。入力に合わせて結果が更新されます。

  2. 2

    クラスのボタン(1xx〜5xx)で一覧を絞り込みます。たとえばクライアントエラーをまとめて確認できます。

  3. 3

    各コードの説明を読み、意味、サーバーが返すべき場面、クライアントの反応を確認します。

  4. 4

    RFCのリンクで正確な仕様を確認したり、#429のようなアンカー付きリンクで特定のコードを共有したりできます。

活用例

REST APIの設計

POST後はLocationヘッダー付きの201 Created、DELETE後は204 No Content、不正なJSONには400、バリデーションエラーには422、現在の状態と矛盾する場合は409を返します。

SEOを保ったページ移転

恒久的な移転には301または308を使い検索順位を引き継ぎ、A/Bテストなど一時的なリダイレクトには302または307を使います。308と307はPOSTをPOSTのまま維持します。

認証エラー

未ログインやトークン無効には401、ユーザーは分かるが権限がない場合は403を返します。リソースの存在を隠すため403の代わりに404を返すAPIも多くあります。

メンテナンスと過負荷

メンテナンス中はRetry-Afterヘッダー付きの503を返してクローラーに順位を維持させ、レート制限を超えたクライアントにはRetry-After付きの429を返します。

よくある質問

401と403の違いは?+

401 Unauthorizedは「あなたは誰?」、つまり認証がない・失敗したという意味です。403 Forbiddenは「誰かは分かるが、これは許可されていない」です。再ログインで401は解決しますが403は解決しません。

リダイレクトは301と302のどちら?+

旧URLが完全になくなるなら301(または308)、戻ってくるなら302(または307)です。恒久的な移転に302を使うと、新URLのインデックスが遅れることがあります。

502、503、504の違いは?+

502 Bad Gateway: プロキシが上流サーバーから不正な応答を受け取った。503 Service Unavailable: サーバーが過負荷またはメンテナンス中。504 Gateway Timeout: 上流サーバーが時間内に応答しなかった。

エラーでも200とエラーメッセージを返してよい?+

いいえ。クライアント、キャッシュ、監視ツールはステータスコードに依存しています。失敗に200を返すとツールからエラーが見えなくなり、エラーページが「ソフト404」としてインデックスされることもあります。