HTTPステータスコード事典
HTTP Status Reference
各ステータスコードの仕様上の意味、キャッシュの扱い、そしてよくある誤用を説明します。
HTTPのステータスコードをすべて引ける参照表です。何を意味するのか、どのRFCが定めているのか、既定でキャッシュに保存してよいのか、どのヘッダーと一緒に送らなければならないのかが入っています。コード・名称・要約を検索でき、検索語を受け付ける言語は英語、韓国語、日本語、簡体中国語、スペイン語です。「認証」「見つかりません」「レート制限」のような日本語の言い回しでも引けます。
コード・名前・要約・注記をまとめて探します。使える言語は英語、韓国語、日本語、簡体中国語、スペイン語です。
404 Not Found
404Not Found
このURLにはリソースがありません。
クライアント側のエラー——悪いのはリクエストのほうです。そのまま送り直しても同じように失敗します。
RFC 9110 §15.5.5既定でキャッシュ可能か
はい
既定でキャッシュ可能です。すでに存在するページにCDNが404を返し続けるのを初めて見たとき、誰もが驚く事実です。
62件中62件
| コード | 名前 | 意味 | キャッシュ可 |
|---|---|---|---|
| 100 | Continue | クライアントはそのままリクエスト本文を送って構いません。 | いいえ |
| 101 | Switching Protocols | サーバーがクライアントの求めたプロトコルへ切り替えます。 | いいえ |
| 102 | Processing | WebDAV: リクエストをいま処理しています。 | いいえ |
| 103 | Early Hints | 先行して送るヘッダーです。本当のレスポンスより前にクライアントが先読みを始められます。 | いいえ |
| 200 | OK | リクエストは成功しました。 | はい |
| 201 | Created | 新しいリソースができました。 | いいえ |
| 202 | Accepted | リクエストは受け付けましたが、まだ実行していません。 | いいえ |
| 203 | Non-Authoritative Information | 中継しているプロキシがレスポンスに手を加えました。 | はい |
| 204 | No Content | 成功です。そして本文は意図的にありません。 | はい |
| 205 | Reset Content | 成功です。クライアントは送信したフォームを空に戻すべきです。 | いいえ |
| 206 | Partial Content | 求められたバイト範囲です。 | はい |
| 207 | Multi-Status | WebDAV: サブリクエストごとのステータスを収めたXMLの本文です。 | いいえ |
| 208 | Already Reported | WebDAV: この要素はすでに列挙済みです。 | いいえ |
| 226 | IM Used | インスタンス操作を適用した結果がレスポンスになっています。 | いいえ |
| 300 | Multiple Choices | 表現がいくつもあります。どれか選んでください。 | はい |
| 301 | Moved Permanently | リソースのURLが変わりました。これきりずっとです。 | はい |
| 302 | Found | 一時的なリダイレクトです。 | いいえ |
| 303 | See Other | 別のURLをGETで取りに行ってください。 | いいえ |
| 304 | Not Modified | キャッシュしてある写しはまだ使えます。 | いいえ |
| 305 | Use Proxy | 非推奨です。クライアントは指定のプロキシを使うように、という意味でした。 | いいえ |
| 307 | Temporary Redirect | メソッドを保つ一時的なリダイレクトです。 | いいえ |
| 308 | Permanent Redirect | メソッドを保つ恒久的なリダイレクトです。 | はい |
| 400 | Bad Request | リクエストの形が壊れているので、サーバーは処理しません。 | いいえ |
| 401 | Unauthorized | 認証が必要です。あるいは示された資格情報が拒まれました。 | いいえ |
| 402 | Payment Required | 予約されているだけで、意味は与えられませんでした。 | いいえ |
| 403 | Forbidden | サーバーは意味を理解したうえで断っています。 | いいえ |
| 404 | Not Found | このURLにはリソースがありません。 | はい |
| 405 | Method Not Allowed | URLはあります。ただしこのメソッドは当てはまりません。 | はい |
| 406 | Not Acceptable | サーバーが作れるもののどれも `Accept` ヘッダーに合いません。 | いいえ |
| 407 | Proxy Authentication Required | プロキシが資格情報を求めています。 | いいえ |
| 408 | Request Timeout | クライアントがリクエストを送り終えるのに時間がかかりすぎました。 | いいえ |
| 409 | Conflict | リクエストがいまの状態とぶつかっています。 | いいえ |
| 410 | Gone | ここにありましたが、意図してもう戻しません。 | はい |
| 411 | Length Required | `Content-Length` ヘッダーが必要です。 | いいえ |
| 412 | Precondition Failed | `If-Match` か `If-Unmodified-Since` の条件が満たされませんでした。 | いいえ |
| 413 | Content Too Large | 本文がサーバーの受け入れ限度より大きいです。 | いいえ |
| 414 | URI Too Long | URLがサーバーの受け入れ限度より長いです。 | はい |
| 415 | Unsupported Media Type | 本文の `Content-Type` は、サーバーが扱える種類ではありません。 | いいえ |
| 416 | Range Not Satisfiable | 求められた範囲がリソースの外にあります。 | いいえ |
| 417 | Expectation Failed | `Expect` ヘッダーの求めには応えられません。 | いいえ |
| 418 | I'm a teapot | 1998年のエイプリルフールの冗談が、そのまま居座っています。 | いいえ |
| 421 | Misdirected Request | このサーバーは、このオーソリティに対するレスポンスを返せません。 | いいえ |
| 422 | Unprocessable Content | 形は正しいのに、意味のうえで誤っています。 | いいえ |
| 423 | Locked | WebDAV: リソースはロックされています。 | いいえ |
| 424 | Failed Dependency | WebDAV: 一連の中の前のリクエストが失敗しました。 | いいえ |
| 425 | Too Early | サーバーは、早期データのリクエストが再生される危険を冒しません。 | いいえ |
| 426 | Upgrade Required | クライアントはプロトコルを切り替える必要があります。 | いいえ |
| 428 | Precondition Required | サーバーは、リクエストが条件付きであることを求めています。 | いいえ |
| 429 | Too Many Requests | 回数の上限に達しました。 | いいえ |
| 431 | Request Header Fields Too Large | ヘッダーが大きすぎます。 | いいえ |
| 451 | Unavailable For Legal Reasons | 法的な要求によって遮断されています。 | はい |
| 500 | Internal Server Error | 何かがうまくいかず、サーバーにはそれ以上具体的に言えることがありません。 | いいえ |
| 501 | Not Implemented | サーバーはそのメソッドをそもそも実装していません。 | はい |
| 502 | Bad Gateway | 上流のサーバーが妥当でないものを返しました。 | いいえ |
| 503 | Service Unavailable | 一時的にリクエストを処理できません。 | いいえ |
| 504 | Gateway Timeout | 上流のサーバーが時間内に答えませんでした。 | いいえ |
| 505 | HTTP Version Not Supported | リクエストに書かれたHTTPのバージョンには対応していません。 | いいえ |
| 506 | Variant Also Negotiates | コンテンツネゴシエーションの設定ミスです。 | いいえ |
| 507 | Insufficient Storage | WebDAV: その表現を保存する場所が足りません。 | いいえ |
| 508 | Loop Detected | WebDAV: 処理の途中で無限ループに入りました。 | いいえ |
| 510 | Not Extended | さらに拡張が必要です。 | いいえ |
| 511 | Network 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は「このサーバーはそのメソッドをどこにも実装していない」です。
使い方
検索するか、分類で絞ります
数字、名称、あるいはいま起きている問題を入力します。「gateway」「rate limit」のような語です。あるいは4xxに絞って、上から読み下しても構いません。
1つ開いて詳細を見ます
詳細のパネルには、定めている仕様、ヒューリスティックなキャッシュの対象かどうか、そしてレスポンスが必ず一緒に運ばなければならないヘッダーが出ます。`Allow`の無い405も、`Location`の無い301も、どちらも不完全です。
取り違えやすい組を読みます
下の区画が、選び間違えやすいものを扱っています。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のように扱われます。ただしキャッシュもプロキシもライブラリも分類を見て判断するので、登録されていないコードは、ヘッダーのほうがうまく運べる情報を運ぶだけになります。
ここから渡せます
MIMEタイプ検索
MIME Type Lookup
拡張子からMIMEタイプを、あるいはその逆を引き、ファイルの先頭バイトからも型を推定します。
HTTPヘッダー確認
HTTP Header Inspector
URLを取得して、レスポンスヘッダーの全文・リダイレクトの連鎖・所要時間・使われた圧縮方式を表示します。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
HTTPリクエスト作成
HTTP Request Builder
GET/POST/PUT/PATCH/DELETE/HEADをヘッダーと本文まで指定して送り、ステータス・ヘッダー・本文・所要時間を表示します(CookieとAuthorizationは転送しません)。
HTTPヘッダー確認
HTTP Header Inspector
URLを取得して、レスポンスヘッダーの全文・リダイレクトの連鎖・所要時間・使われた圧縮方式を表示します。
MIMEタイプ検索
MIME Type Lookup
拡張子からMIMEタイプを、あるいはその逆を引き、ファイルの先頭バイトからも型を推定します。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。
文字列のハッシュ
Text Hash
文字列のMD5・SHA-1・SHA-256・SHA-384・SHA-512・CRC-32を計算し、大文字表記とBase64での出力も選べます。