返ってきたコードから入ってください。どのページも、仕様が何と言っているかと、あなたが実際に何をすればいいかを分けて書いていて、フロントエンド・バックエンド・ただページを開きたかった人の 3 つを別々の問題として扱います。
| コード | 名称 | クラス | 意味 |
|---|---|---|---|
| 301 | Moved Permanently | 3xx | 古い URL は退役し、`Location` に入っている URL がその座を引き継ぎます。しかも 301 は、何も指示しなくてもキャッシュが保存してよい数少ない応答の一つなので、間違って出した 301 はいちばん取り消しにくいリダイレクトになります。 |
| 302 | Found | 3xx | 一時的な迂回です。リソース自体は要求した URL のままそこにあるけれど、今回だけは別の場所から返したい——という意味で、しかもブラウザはその迂回をあなたのコードに見せないまま辿ります。 |
| 304 | Not Modified | 3xx | 手元のコピーはまだ有効です。リクエストに検証子を添えて送り、サーバーが自分の持っているものと比べ、一致したので、ヘッダーだけを返してボディを意図的に省いた——それが 304 です。 |
| 400 | Bad Request | 4xx | サーバーがリクエストの解釈自体を拒みました。リクエスト行・ヘッダー・メッセージの区切り・ボディのどこかが壊れているか大きすぎるということで、たいていの場合、アプリケーションのコードは 1 行も走っていません。 |
| 401 | Unauthorized | 4xx | リクエストが使える認証情報を運んでいませんでした。理由句は Unauthorized ですが、実際に表しているのは「未認証」の状態で、しかも何を出せば通るのかを示すヘッダーの添付は必須です。 |
| 403 | Forbidden | 4xx | サーバーはリクエストの意味を完全に理解したうえで、実行を拒んでいます。しかも 401 と違って、何を出せば通ったのかを説明するヘッダーを添える義務はありません。 |
| 404 | Not Found | 4xx | サーバーはリクエストの意味を理解したうえで、そのパスに出せるものを何も持っていません。今どきの構成では、リンク切れよりもルーティングかデプロイの取りこぼしであることのほうがずっと多いコードです。 |
| 405 | Method Not Allowed | 4xx | パスは存在しますし、サーバーはそのメソッド自体も知っています。ただ、ここではそのメソッドを受け付けない——そして受け付けるメソッドの一覧を渡すことが義務づけられています。 |
| 429 | Too Many Requests | 4xx | レート制限が「頼みすぎだ」と判断しました。プロトコルの表明ではなくポリシーの表明なので、429 を返す 2 つのサービスがまったく別のものを数えていることもあります。 |
| 500 | Internal Server Error | 5xx | アプリケーション自身が動いて、想定していなかった何かに当たって諦めた——という意味です。だから 502 や 504 と違って、どこかにスタックトレースが必ずあります。仕事はそれがどのログにいるかを見つけることです。 |
| 502 | Bad Gateway | 5xx | アプリケーションの手前にいるプロキシが、代わりに返した答えです。アプリケーション自身の応答が来なかったか、途中で切れたか、HTTP として成立していなかったことを意味します。 |
| 503 | Service Unavailable | 5xx | 何かが意図的に、そして「今は」応じないことを決めました。メンテナンスページ、レート制限、あるいは健全な転送先を一つも持たないロードバランサー——だから 503 は、5xx で唯一「期限」が付いてくるコードです。 |
| 504 | Gateway Timeout | 5xx | プロキシが上流を待ち、しびれを切らして代わりに答えました。だから犯人を特定する数字はステータスコードではなく経過時間のほうです。それは必ず誰かが設定したタイムアウトです。 |
| 521 | Web Server Is Down非標準 | 5xx | IETF ではなく Cloudflare 独自のコードで、5xx の中でいちばん狭い失敗を表します。オリジンが Cloudflare の TCP 接続を能動的に拒否した——遅かったのでも、経路を間違えたのでもなく、何かが「駄目だ」と言ったのです。 |
| 524 | A Timeout Occurred非標準 | 5xx | 中まで届いたのに、そこで黙ってしまったリクエストのための Cloudflare 独自のコードです。接続は成功し、オリジンはリクエストを受け取り、それでも 125 秒後に返せる HTTP 応答がまだ無かった、という意味です。 |