「ログに403と出た。401と何が違う?」で手が止まった経験はないでしょうか。
Tomoyaこの記事は全コードを網羅する百科事典ではなく、早見表です。
桁の意味、迷いやすいペアの見分け方、5xx(サーバーエラー)の切り分け方を、公式の定義に沿って整理しました。
読了目安は約12分。nginxの設定方法やSEO順位への影響については扱いません。
結論を先に
- ステータスコードは3桁の整数で、先頭の1桁がクラス(1xx〜5xx)を表します(RFC 9110)。
- 迷ったら「ペア(詳細)」で切り分けます。「恒久/一時のリダイレクト、認証/認可、未発見/削除済み、ゲートウェイの無効応答/タイムアウト」という具合です。
- 5xxは十把一絡げに「サーバー側のエラー」と考えず、中身で区別します。(500は汎用、502は上流からの無効な応答、503は一時的に処理できない状態、504は上流の応答待ちタイムアウトです)(RFC 9110 / MDN)。
十把一絡げ[じっぱひとからげ]
いろいろなものを雑然とひとまとめにすること。一つ一つ取り上げるほどのことはないとして,まとめて扱うこと。
参照している一次情報は次の3つです。
なぜ早見表が必要なのか
ステータスコードを数字だけで暗記すると、似た番号を取り違えやすくなります。個人開発では、URLの移転・ログイン処理・権限管理・リソースの削除・ゲートウェイ越しのデプロイといった場面で、同じ取り違えが繰り返されがちです。
Tomoya全部を覚える必要はありません!
まず先頭の桁で「棚」を決め、迷いやすい番号だけをペアの表に落とし込めば、実務では十分です。
個人開発を進めてAIエージェントと対話していると頻繁に200だとか404とかを提案・報告してきます。しかし非エンジニアからしたら数字を言われても何を意味するのか理解できません。
そこでこの早見表の記事を作る事で、次に200や404などのHTTPステータスコードが出現した時にどういった意味を持つのかを理解して問題に早急に対処できるようになると考え作成しました。
1xx〜5xxの系統早見表

まずは先頭の桁で「棚」を決めます。下2桁に分類上の特別な意味はありません。
Tomoyaおおまかな概念として把握しておく事で何が問題なのかを特定しやすくなります。
| クラス | 名前(MDN) | 意味の一言 |
|---|---|---|
| 1xx | Informational | 処理の途中経過 |
| 2xx | Successful | 要求は成功した |
| 3xx | Redirection | 別のURIへ案内する |
| 4xx | Client Error | クライアント側の問題として扱う |
| 5xx | Server Error | サーバー側で要求を満たせない |
未知のステータスコードに出会っても、先頭の桁のクラスとして扱い、そのクラスの「x00」相当として解釈すれば問題ありません(RFC 9110)。
個人開発でよく見る候補
公式に「出現頻度ランキング」が存在するわけではありません。
以下は「引く回数が多い」という観点で筆者が選んだ候補であり、頻度を断定するものではない点にご注意ください。
| コード | 一言 | いつ見るか |
|---|---|---|
| 200 | OK | 要求が成功(詳しい意味はメソッドによる) |
| 201 | Created | 新規リソース作成(POSTなどの典型) |
| 204 | No Content | 本文なし。ヘッダーは有効に使われる |
| 301 / 308 | 恒久リダイレクト | 今後も移転先を使い続ける |
| 302 / 307 / 303 | 一時リダイレクト等 | 一時的な移転、またはPOST後の再送防止(303) |
| 304 | Not Modified | キャッシュがまだ使える |
| 400 | Bad Request | 構文または要求内容の誤り |
| 401 | 要認証 | 有効な認証情報がない(MDN:規格名はUnauthorizedだが、意味はunauthenticated) |
| 403 | 拒否 | 要求は理解したが履行しない(権限不足など) |
| 404 / 410 | 未発見/恒久的に消失 | 見つからない、または恒久的な削除が見込まれる |
| 429 | Too Many Requests | レート制限 |
| 500 / 502 / 503 / 504 | サーバー系 | 詳細は後述 |
何を確認すればいいか
- DevToolsのNetworkタブで、対象リクエストのステータスコード(3桁)を確認する。
- 先頭の桁でクラスを判断する。
- 4xxなら自分側の要求(URL・認証情報・権限・リクエストボディ)を疑い、5xxならサーバーや上流の処理を疑う。

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

リダイレクト: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 9110、MDN 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がないときの汎用コード | 自分のアプリやサーバーログ上の例外 |
| 502 | gateway/proxyとして、上流から無効な応答を受け取った | 上流(アプリサーバーなど)の障害・不正な応答。手前のゲートウェイ設定 |
| 503 | 一時的な過負荷、または予定されたメンテナンス。準備が整っていない | 過負荷・メンテナンス。Retry-Afterを送ってよい。通常はキャッシュしないよう注意 |
| 504 | gateway/proxyとして、上流から期限内に応答が返らなかった | 上流の遅延・タイムアウト設定。502(無効な応答)との切り分け |
確認の手順
- 自分がゲートウェイ越し(Firebase Hostingやリバースプロキシなど)の構成かを確認する。
- 502なら「上流から何かおかしな応答が来た」、504なら「上流が時間内に答えなかった」と分けてログを見る。
- 503なら一時的な過負荷かメンテナンスかを切り分け、可能なら
Retry-Afterヘッダーを確認する。 - 500の場合は、より具体的な5xxに言い換えられないか、ログを見て検討する。
ここで迷いやすいポイント
- 401の英語名「Unauthorized」に引っ張られて、権限不足まで401にしない。要認証が401、拒否が403です。
- URLを恒久的に移転したのに302のままにしない。恒久なら301、メソッドを維持したいなら308です。
- 消したページを全部410にしない。恒久かどうか分からなければ404で問題ありません。APIの削除にも410は必須ではありません。
- 5xxをすべて「サーバーが壊れた」で片付けない。502と504はゲートウェイから見て疑う場所が違います。
- 「301にすればSEO順位が上がる」とは断定しません。一次情報に効果を保証する記述はないためです。
よくある質問
まとめと次の一歩
- 先頭の桁で棚(1xx〜5xx)を決める
- 迷ったらペア表を見る。リダイレクト/401・403/404・410
- 5xxは500・502・503・504で疑う場所を変える
- 全コードの暗記やSEO効果の推測は、この記事の範囲外
Tomoya次にやることは2つです。
①いま見ているリクエストの3桁をNetworkタブで確認すること。
②そして、上の該当する表の1行に当てはめることです。
もう一歩踏み込みたい方は、こちらの記事もどうぞ。


参考資料
- RFC 9110 §15(HTTP Semantics – Status Codes) https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes
- MDN「HTTP response status codes」 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
- MDN「Redirections」 https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Redirections
※本記事はRFC 9110とMDN(Status / Redirections)に基づく早見表です。仕様や記述は版によって変わる可能性があります。個別環境の設定手順書ではありません。


コメント