HTTPステータス早見表。迷いやすいコードだけ

「HTTPステータス早見表 迷いやすいコードだけ」のテキストと早見表タブレットを持つ人物

「ログに403と出た。401と何が違う?」で手が止まった経験はないでしょうか。

Tomoya

この記事は全コードを網羅する百科事典ではなく、早見表です。

桁の意味、迷いやすいペアの見分け方、5xx(サーバーエラー)の切り分け方を、公式の定義に沿って整理しました。

読了目安は約12分。nginxの設定方法やSEO順位への影響については扱いません。


目次

結論を先に

  1. ステータスコードは3桁の整数で、先頭の1桁がクラス(1xx〜5xx)を表します(RFC 9110)。
  2. 迷ったら「ペア(詳細)」で切り分けます。「恒久/一時のリダイレクト、認証/認可、未発見/削除済み、ゲートウェイの無効応答/タイムアウト」という具合です。
  3. 5xxは十把一絡げに「サーバー側のエラー」と考えず、中身で区別します。(500は汎用、502は上流からの無効な応答、503は一時的に処理できない状態、504は上流の応答待ちタイムアウトです)(RFC 9110 / MDN)。
補足

十把一絡げ[じっぱひとからげ]

いろいろなものを雑然とひとまとめにすること。一つ一つ取り上げるほどのことはないとして,まとめて扱うこと。

参照している一次情報は次の3つです。


なぜ早見表が必要なのか

ステータスコードを数字だけで暗記すると、似た番号を取り違えやすくなります。個人開発では、URLの移転・ログイン処理・権限管理・リソースの削除・ゲートウェイ越しのデプロイといった場面で、同じ取り違えが繰り返されがちです。

Tomoya

全部を覚える必要はありません!

まず先頭の桁で「棚」を決め、迷いやすい番号だけをペアの表に落とし込めば、実務では十分です。

個人開発を進めてAIエージェントと対話していると頻繁に200だとか404とかを提案・報告してきます。しかし非エンジニアからしたら数字を言われても何を意味するのか理解できません。

そこでこの早見表の記事を作る事で、次に200や404などのHTTPステータスコードが出現した時にどういった意味を持つのかを理解して問題に早急に対処できるようになると考え作成しました。


1xx〜5xxの系統早見表

Webの仕組みと1xxから5xxまでのHTTPステータス系統早見表をまとめた図解
クライアントとサーバー間のWeb通信の流れと、1xxから5xxまでのHTTPステータスコードの分類をまとめた早見表です。

まずは先頭の桁で「棚」を決めます。下2桁に分類上の特別な意味はありません。

Tomoya

おおまかな概念として把握しておく事で何が問題なのかを特定しやすくなります

クラス名前(MDN)意味の一言
1xxInformational処理の途中経過
2xxSuccessful要求は成功した
3xxRedirection別のURIへ案内する
4xxClient Errorクライアント側の問題として扱う
5xxServer Errorサーバー側で要求を満たせない

未知のステータスコードに出会っても、先頭の桁のクラスとして扱い、そのクラスの「x00」相当として解釈すれば問題ありません(RFC 9110)。

個人開発でよく見る候補

公式に「出現頻度ランキング」が存在するわけではありません。

以下は「引く回数が多い」という観点で筆者が選んだ候補であり、頻度を断定するものではない点にご注意ください。

コード一言いつ見るか
200OK要求が成功(詳しい意味はメソッドによる)
201Created新規リソース作成(POSTなどの典型)
204No Content本文なし。ヘッダーは有効に使われる
301 / 308恒久リダイレクト今後も移転先を使い続ける
302 / 307 / 303一時リダイレクト等一時的な移転、またはPOST後の再送防止(303)
304Not Modifiedキャッシュがまだ使える
400Bad Request構文または要求内容の誤り
401要認証有効な認証情報がないMDN:規格名はUnauthorizedだが、意味はunauthenticated
403拒否要求は理解したが履行しない(権限不足など)
404 / 410未発見/恒久的に消失見つからない、または恒久的な削除が見込まれる
429Too Many Requestsレート制限
500 / 502 / 503 / 504サーバー系詳細は後述

何を確認すればいいか

  1. DevToolsのNetworkタブで、対象リクエストのステータスコード(3桁)を確認する。
  2. 先頭の桁でクラスを判断する。
  3. 4xxなら自分側の要求(URL・認証情報・権限・リクエストボディ)を疑い、5xxならサーバーや上流の処理を疑う。
開発者ツールのNetworkタブでStatus 200の正常通信ログが表示された画面
開発者ツールの「Network」タブを開き、各リクエストのステータスコード「200」とレスポンス時間を確認する画面です。

迷いやすいペアの判断表

似たコードは「何を約束しているか」で切り分けます。名前の語感だけで選ばないことが大切です。

開発者ツールのNetworkログでリクエストのStatus 307が強調表示された画面
開発者ツールの通信ログにて、対象リクエストのステータスコード「307」が返されている状態です。

リダイレクト:301 / 302 / 307 / 308(+303)

リダイレクトは3xxのステータスコードとLocationヘッダーで新しいURLを示します。ブラウザはLocationを読み込みにいきます(MDN Redirections)。

条件返すコードの目安
移転は恒久的。今後は新しいURIを使ってほしい301。メソッドを変えたくなければ308(RFC 9110 / MDN
移転は一時的。将来も元のターゲットURIを使い続ける302。メソッドを変えたくなければ307
PUT/POSTのあと、再読み込みで再送してほしくない303(他のメソッドからGETへ。ボディは失われる)
非GETでメソッドとボディを維持したい(恒久)308
非GETでメソッドとボディを維持したい(一時)307

301と302には歴史的な経緯があり、ブラウザがPOSTをGETに変えてしまう場合があります。

それを避けたいなら308/307を使います(RFC 9110MDN Redirections)。

401 vs 403

条件取るべき対応
まだ認証できていない(資格情報がない、または無効)401。WWW-Authenticateヘッダーが必要
要求は理解したが履行を拒否する(権限不足など。認証済みでもありうる)403
リソースの存在自体を隠したい404を返すという選択肢もある

MDNの整理では、401は規格上の名前こそ「Unauthorized」ですが、意味としては「Unauthenticated(未認証)」です。

403は「アクセス権がない」状態で、401と違いサーバー側にはすでにクライアントの身元が分かっている、と考えると区別しやすくなります。

404 vs 410

条件取るべき対応
今は見つからない。一時的か恒久的かは示さない404
恒久的に利用不可の見込みで、転送先もない410が望ましい
恒久かどうか分からない404

MDNは410について、キャッシュやリンクの削除を期待する用途としており、規格側は期間限定のプロモーションなどの例も挙げています。ただし「APIの削除には410が必須」とまでは書かれていません。


5xxの切り分け早見。何を疑うか

「サーバーエラー」でひとくくりにしないことが大切です。コードによって疑うべき場所が変わります

コード公式の芯(RFC 9110 / MDN)何を疑うか
500予期しない状況。より適切な5xxがないときの汎用コード自分のアプリやサーバーログ上の例外
502gateway/proxyとして、上流から無効な応答を受け取った上流(アプリサーバーなど)の障害・不正な応答。手前のゲートウェイ設定
503一時的な過負荷、または予定されたメンテナンス。準備が整っていない過負荷・メンテナンス。Retry-Afterを送ってよい。通常はキャッシュしないよう注意
504gateway/proxyとして、上流から期限内に応答が返らなかった上流の遅延・タイムアウト設定。502(無効な応答)との切り分け

確認の手順

  1. 自分がゲートウェイ越し(Firebase Hostingやリバースプロキシなど)の構成かを確認する。
  2. 502なら「上流から何かおかしな応答が来た」、504なら「上流が時間内に答えなかった」と分けてログを見る。
  3. 503なら一時的な過負荷かメンテナンスかを切り分け、可能ならRetry-Afterヘッダーを確認する。
  4. 500の場合は、より具体的な5xxに言い換えられないか、ログを見て検討する。

ここで迷いやすいポイント

ポイント5選
  1. 401の英語名「Unauthorized」に引っ張られて、権限不足まで401にしない。要認証が401、拒否が403です。
  2. URLを恒久的に移転したのに302のままにしない。恒久なら301、メソッドを維持したいなら308です。
  3. 消したページを全部410にしない。恒久かどうか分からなければ404で問題ありません。APIの削除にも410は必須ではありません。
  4. 5xxをすべて「サーバーが壊れた」で片付けない。502と504はゲートウェイから見て疑う場所が違います。
  5. 「301にすればSEO順位が上がる」とは断定しません。一次情報に効果を保証する記述はないためです。

よくある質問

401と403、結局どっちを返せばいい?

認証情報がない、または無効なら401です。認証済みでも権限がなければ403です。

301と302、SEO的にはどっちが有利?

一次情報に順位への影響を保証する記述はありません。「移転が恒久か一時か」という事実で選ぶのが基本です。

502と504の違いがよく分からない

502は上流から「おかしな応答」が返ってきた状態、504は上流が「時間内に応答しなかった」状態です。疑う場所が違います。


まとめと次の一歩

  • 先頭の桁で棚(1xx〜5xx)を決める
  • 迷ったらペア表を見る。リダイレクト/401・403/404・410
  • 5xxは500・502・503・504で疑う場所を変える
  • 全コードの暗記やSEO効果の推測は、この記事の範囲外
Tomoya

次にやることは2つです。

①いま見ているリクエストの3桁をNetworkタブで確認すること。

②そして、上の該当する表の1行に当てはめることです。

もう一歩踏み込みたい方は、こちらの記事もどうぞ。

参考資料

  1. RFC 9110 §15(HTTP Semantics – Status Codes) https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes
  2. MDN「HTTP response status codes」 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
  3. MDN「Redirections」 https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Redirections

※本記事はRFC 9110とMDN(Status / Redirections)に基づく早見表です。仕様や記述は版によって変わる可能性があります。個別環境の設定手順書ではありません。

「HTTPステータス早見表 迷いやすいコードだけ」のテキストと早見表タブレットを持つ人物

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

始めまして。このブログを運営するTomoyaです。
未経験個人開発者。AI×個人開発(Vibe Cording)で学習して参入してくれる人が増えて広がっていくと良いなと思って始めました。

実際に作成→デプロイ(公開)→運営を行ってそれについての問題や疑問を記録していきます。
また行っていく上で内容(セキュリティ・制限など)にもこだわっていきたいなと思っています。

コメント

コメントする


目次