本文へスキップ

HTTPステータスコード事典

HTTP Status Reference

各ステータスコードの仕様上の意味、キャッシュの扱い、そしてよくある誤用を説明します。

HTTPのステータスコードをすべて引ける参照表です。何を意味するのか、どのRFCが定めているのか、既定でキャッシュに保存してよいのか、どのヘッダーと一緒に送らなければならないのかが入っています。コード・名称・要約を検索でき、検索語を受け付ける言語は英語、韓国語、日本語、簡体中国語、スペイン語です。「認証」「見つかりません」「レート制限」のような日本語の言い回しでも引けます。

🔒 ブラウザの中だけで動きますhttpstatusreference

コード・名前・要約・注記をまとめて探します。使える言語は英語、韓国語、日本語、簡体中国語、スペイン語です。

分類

404 Not Found

404Not Found

このURLにはリソースがありません。

クライアント側のエラー——悪いのはリクエストのほうです。そのまま送り直しても同じように失敗します。

定義
RFC 9110 §15.5.5
既定でキャッシュ可能か
はい

既定でキャッシュ可能です。すでに存在するページにCDNが404を返し続けるのを初めて見たとき、誰もが驚く事実です。

62件中62件

すべてのHTTPステータスコードと、その意味。
コード名前意味キャッシュ可
100Continueクライアントはそのままリクエスト本文を送って構いません。いいえ
101Switching Protocolsサーバーがクライアントの求めたプロトコルへ切り替えます。いいえ
102ProcessingWebDAV: リクエストをいま処理しています。いいえ
103Early Hints先行して送るヘッダーです。本当のレスポンスより前にクライアントが先読みを始められます。いいえ
200OKリクエストは成功しました。はい
201Created新しいリソースができました。いいえ
202Acceptedリクエストは受け付けましたが、まだ実行していません。いいえ
203Non-Authoritative Information中継しているプロキシがレスポンスに手を加えました。はい
204No Content成功です。そして本文は意図的にありません。はい
205Reset Content成功です。クライアントは送信したフォームを空に戻すべきです。いいえ
206Partial Content求められたバイト範囲です。はい
207Multi-StatusWebDAV: サブリクエストごとのステータスを収めたXMLの本文です。いいえ
208Already ReportedWebDAV: この要素はすでに列挙済みです。いいえ
226IM Usedインスタンス操作を適用した結果がレスポンスになっています。いいえ
300Multiple Choices表現がいくつもあります。どれか選んでください。はい
301Moved PermanentlyリソースのURLが変わりました。これきりずっとです。はい
302Found一時的なリダイレクトです。いいえ
303See Other別のURLをGETで取りに行ってください。いいえ
304Not Modifiedキャッシュしてある写しはまだ使えます。いいえ
305Use Proxy非推奨です。クライアントは指定のプロキシを使うように、という意味でした。いいえ
307Temporary Redirectメソッドを保つ一時的なリダイレクトです。いいえ
308Permanent Redirectメソッドを保つ恒久的なリダイレクトです。はい
400Bad Requestリクエストの形が壊れているので、サーバーは処理しません。いいえ
401Unauthorized認証が必要です。あるいは示された資格情報が拒まれました。いいえ
402Payment Required予約されているだけで、意味は与えられませんでした。いいえ
403Forbiddenサーバーは意味を理解したうえで断っています。いいえ
404Not FoundこのURLにはリソースがありません。はい
405Method Not AllowedURLはあります。ただしこのメソッドは当てはまりません。はい
406Not Acceptableサーバーが作れるもののどれも `Accept` ヘッダーに合いません。いいえ
407Proxy Authentication Requiredプロキシが資格情報を求めています。いいえ
408Request Timeoutクライアントがリクエストを送り終えるのに時間がかかりすぎました。いいえ
409Conflictリクエストがいまの状態とぶつかっています。いいえ
410Goneここにありましたが、意図してもう戻しません。はい
411Length Required`Content-Length` ヘッダーが必要です。いいえ
412Precondition Failed`If-Match` か `If-Unmodified-Since` の条件が満たされませんでした。いいえ
413Content Too Large本文がサーバーの受け入れ限度より大きいです。いいえ
414URI Too LongURLがサーバーの受け入れ限度より長いです。はい
415Unsupported Media Type本文の `Content-Type` は、サーバーが扱える種類ではありません。いいえ
416Range Not Satisfiable求められた範囲がリソースの外にあります。いいえ
417Expectation Failed`Expect` ヘッダーの求めには応えられません。いいえ
418I'm a teapot1998年のエイプリルフールの冗談が、そのまま居座っています。いいえ
421Misdirected Requestこのサーバーは、このオーソリティに対するレスポンスを返せません。いいえ
422Unprocessable Content形は正しいのに、意味のうえで誤っています。いいえ
423LockedWebDAV: リソースはロックされています。いいえ
424Failed DependencyWebDAV: 一連の中の前のリクエストが失敗しました。いいえ
425Too Earlyサーバーは、早期データのリクエストが再生される危険を冒しません。いいえ
426Upgrade Requiredクライアントはプロトコルを切り替える必要があります。いいえ
428Precondition Requiredサーバーは、リクエストが条件付きであることを求めています。いいえ
429Too Many Requests回数の上限に達しました。いいえ
431Request Header Fields Too Largeヘッダーが大きすぎます。いいえ
451Unavailable For Legal Reasons法的な要求によって遮断されています。はい
500Internal Server Error何かがうまくいかず、サーバーにはそれ以上具体的に言えることがありません。いいえ
501Not Implementedサーバーはそのメソッドをそもそも実装していません。はい
502Bad Gateway上流のサーバーが妥当でないものを返しました。いいえ
503Service Unavailable一時的にリクエストを処理できません。いいえ
504Gateway Timeout上流のサーバーが時間内に答えませんでした。いいえ
505HTTP Version Not Supportedリクエストに書かれたHTTPのバージョンには対応していません。いいえ
506Variant Also Negotiatesコンテンツネゴシエーションの設定ミスです。いいえ
507Insufficient StorageWebDAV: その表現を保存する場所が足りません。いいえ
508Loop DetectedWebDAV: 処理の途中で無限ループに入りました。いいえ
510Not Extendedさらに拡張が必要です。いいえ
511Network Authentication Requiredキャプティブポータルがログインを求めています。いいえ

よく取り違えられるもの

401は「あなたが誰か分からない」という意味です。資格情報を添えてもう一度どうぞ。403は「あなたが誰かは分かっていて、それでも駄目だ」です。資格情報は正しかったのに権限が足りなかったなら403です。
400はサーバーが読み取れなかったリクエストに、422は完璧に読み取れたうえで内容に同意しないリクエストに使います。422はデータを変えて再試行できますが、400はたいていクライアント自身が壊れているという意味です。
一つめの軸は永続性です。301と308は恒久、302と307は一時。二つめの軸はメソッドの保存です。307と308はメソッドを保ち、301と302は慣行として保ちません。APIで迷ったら307か308を使ってください。
どちらもアプリではなくプロキシが出します。502は「上流が意味不明な答えを返したか、死んだ」、504は「上流がついに答えなかった」です。後者は調整できるタイムアウトで、前者は直さなければならない障害です。
どちらも「そこには何もない」という意味です。410はそれに加えて「二度と戻らない」という意味で、検索エンジンはその言葉を数か月ではなく数日で反映します。
405は「このURLでは駄目で、使えるのはこれらだ」という意味で、`Allow` ヘッダーを送らなければなりません。501は「このサーバーはそのメソッドをどこにも実装していない」です。
ここでいう「キャッシュ可能」は発見的にキャッシュしてよいという意味です。RFC 9110 §15.1が、ほかに指示がないときキャッシュが保存してよい番号を並べています。404もその一覧に入っています。すでに公開したページなのにCDNが「見つかりません」を返し続けるのは、そのためです。

使い方

  1. 検索するか、分類で絞ります

    数字、名称、あるいはいま起きている問題を入力します。「gateway」「rate limit」のような語です。あるいは4xxに絞って、上から読み下しても構いません。

  2. 1つ開いて詳細を見ます

    詳細のパネルには、定めている仕様、ヒューリスティックなキャッシュの対象かどうか、そしてレスポンスが必ず一緒に運ばなければならないヘッダーが出ます。`Allow`の無い405も、`Location`の無い301も、どちらも不完全です。

  3. 取り違えやすい組を読みます

    下の区画が、選び間違えやすいものを扱っています。401と403、302と307、502と504です。

よくある質問

401と403は何が違いますか

401は、リクエストに有効な認証情報が無かったという意味で、どう示せばよいのかを伝える`WWW-Authenticate`ヘッダーを一緒に送らなければなりません。403は、認証情報は理解できたが、それでは足りないという意味です。ログイン済みで権限の無い利用者に401を返すのが、よくある間違いです。

CDNが404をキャッシュするのはなぜですか

してよいからです。RFC 9110 §15.1が、ほかに指示の無いときにキャッシュがヒューリスティックに保存してよいコードを挙げていて、404はそこに入っています。あとで公開したページも、キャッシュが期限切れになるか消すまでは見つからないままです。あとで200になる見込みの404には、`Cache-Control: no-store`を添えて送ってください。

302と307のどちらを使いますか

メソッドを保ちたいなら307です。かつてクライアントは302を受け取るとPOSTをGETに変えていました。仕様がそうしろと言ったわけでもないのに、みながそうしていたのです。だから「メソッドはそのまま、URLだけ新しく」をあいまいさなく言うために、307と308があります。

ステータスコードを自分で作ってもいいですか

送ること自体はできますし、クライアントは知らないコードをその分類の代表として扱います。499は400のように扱われます。ただしキャッシュもプロキシもライブラリも分類を見て判断するので、登録されていないコードは、ヘッダーのほうがうまく運べる情報を運ぶだけになります。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。