HTTP ステータスコード

1xx〜5xxすべてのHTTPステータスコードを説明付きで検索できる完全リファレンス。無料・ブラウザ内で処理。

  • ブラウザ内で処理
  • データはブラウザ外に出ません
  • 無料 · 登録不要
コード、名前、英語の説明を入力すると、その場で絞り込みます。大文字と小文字は区別しません。検索を空にするか、ツール内で Ctrl/⌘+L を押すと全件に戻ります。

ステータスコード

61 個のコードを 1xx〜5xx に分けて表示します。名前と説明はどの言語ページでも英語です。この一覧にないコードは含まれません。
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。

ステータスコードのカテゴリ

  • 1xx 情報:暫定レスポンス——リクエスト受信済み、まだ処理中。
  • 2xx 成功:リクエストが受信・理解・受理された。
  • 3xx リダイレクト:リクエストを完了するために追加操作が必要。
  • 4xx クライアントエラー:リクエストに誤りがあるか実行不可能。
  • 5xx サーバーエラー:正常なリクエストの処理に失敗した。

API で返すステータスコードの選び方

状況コード
GET でリソースを返す200
POST でリソースを作成した201(Location ヘッダー付き)
成功したがボディがない(DELETE など)204
ボディが JSON として不正、または構文エラー400
トークンがない、またはトークンが無効401
トークンは有効だが権限がない403
リソースが存在しない404
重複(登録済みのメールアドレスなど)409
ボディは解析できるが業務ルールに違反(終了日が開始日より前)422
レート制限を超えた429
想定外の例外500

401 か 403 か。 401 はサーバーが相手を識別できていない状態で、401 を返すサーバーは WWW-Authenticate ヘッダーも送らなければなりません(RFC 9110 §15.5.2)。403 は相手を識別したうえで操作を許可しない状態です。リソースの存在自体を知られたくない場合は、403 の代わりに 404 を返せます(§15.5.4)。

リダイレクトとメソッド。 歴史的な理由から、ブラウザーは 301 と 302 をたどるときに POST を GET に変えることがあります(§15.4.2)。307 と 308 はメソッドとボディを保持しなければなりません。フォームの POST を POST のまま転送したいときは 307 か 308 を使います。

コードとセットで返すヘッダー

コードヘッダー規定
201Location: /api/users/456作成したリソースを指す
401WWW-Authenticate: Bearer realm="api"必須
405Allow: GET, POST必須(§15.5.6)
429、503Retry-After: 60任意。秒数か HTTP 日付(RFC 6585 §4)
304—ボディなし。クライアントはキャッシュを使う

JavaScript での扱い方

fetch() は 4xx や 5xx では reject しません。reject するのはネットワークエラーのときだけなので、res.ok(200〜299 で true)か res.status を確認します。

const res = await fetch('/api/orders', { method: 'POST', body });
if (res.status === 401) return redirectToLogin();
if (res.status === 429) {
  const wait = Number(res.headers.get('Retry-After') ?? 60);
  return retryAfter(wait);
}
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const order = await res.json();

制限事項

  • 登録済みの 61 コード。 一覧は IANA のレジストリに沿っています。nginx の 499 や Cloudflare の 520〜526 のような特定製品だけのコードは載っていません。
  • 2 つのコードは旧名称です。 一覧では 413 Payload Too Large と 422 Unprocessable Entity ですが、RFC 9110 で Content Too Large と Unprocessable Content に改名されています。
  • 説明は英語のみ。 どの言語のページでも名称と説明は英語です。検索はコード・名称・英語の説明文に一致するものを探すので、「リダイレクト」では何も出ません。redirect で検索してください。

FAQ

HTTPステータスコードの各範囲の意味は何ですか?

1xx=情報(リクエスト受信済み、処理中)、2xx=成功(リクエスト完了)、3xx=リダイレクト(追加操作が必要)、4xx=クライアントエラー(不正なリクエスト・未認証など)、5xx=サーバーエラー(正常なリクエストを処理できなかった)。

301と302の違いは何ですか?

301(恒久移動)はブラウザと検索エンジンに記録の更新を指示します——リソースは恒久的に移動しました。302(発見)は一時的なリダイレクトで、クライアントは今後も元のURLを使用すべきです。

404と410の使い分けは?

リソースが存在せず復活するか不明な場合は404 Not Foundを使います。リソースが確実に永久削除された場合は410 Goneを使います——これは検索エンジンにインデックスから削除するよう伝えます。

APIで429が重要な理由は?

429(リクエスト過多)はレート制限の標準レスポンスコードです。クライアントはRetry-Afterヘッダーを尊重し、サーバーへの連続リクエストを避けるために指数バックオフを実装する必要があります。