Webサイトを開いた時に、「404」や「500」という数字を見たことはありませんか?
これはウイルスの警告ではなく、サーバーが通信結果を伝えるHTTPステータスコードです。
今回は、ステータスコードを「お店からの返事」に例えて解説します。
結論:「ステータスコード」=「HTTPリクエストの結果を表す3桁の番号」
ブラウザやアプリがサーバーへリクエストを送ると、サーバーはレスポンスを返します。その中に含まれる3桁の番号がステータスコードです。
最初の数字によって、大きな分類が分かります。
- 1xx:情報 — 処理を継続している
- 2xx:成功 — リクエストを正常に受け付けた
- 3xx:リダイレクト — 完了のために追加の移動や処理が必要
- 4xx:クライアントエラー — リクエストを処理できない
- 5xx:サーバーエラー — 有効に見えるリクエストをサーバーが処理できない
4xxだから利用者本人が悪い、5xxだから担当者が悪い、と決めつけるための番号ではありません。問題の方向を切り分ける手がかりです。
よく見るステータスコード
200 OK
リクエストが成功したことを示します。
Webページの取得だけでなく、APIの処理成功などにも使われます。成功時に常に200を使うとは限らず、作成成功の201や、本文を返さない204などもあります。
400 Bad Request
リクエストの形式が不正などの理由で、サーバーが処理できない状態です。
入力値の不足、壊れたJSON、想定外の形式などが原因になります。
401 Unauthorized
有効な認証情報がないため、処理できない状態です。名前はUnauthorizedですが、実際には「まず認証が必要」という場面で使われます。
403 Forbidden
サーバーは要求を理解していますが、処理を拒否しています。
ログイン済みでも権限が足りない場合などに使われます。理由を隠すため、存在するページに404を返す設計もあります。
404 Not Found
指定された対象が見つからない、または存在を公開しない状態です。
URLの間違い、ページの削除、公開場所の設定ミスなどが考えられます。
500 Internal Server Error
サーバーが予期しない状態に遭遇し、リクエストを処理できなかったことを示します。
プログラムの例外や設定不備などが原因になりますが、500だけでは具体的な原因までは分かりません。サーバー全体が停止したという意味でもありません。
503 Service Unavailable
一時的な過負荷やメンテナンスなどで、現在はリクエストを処理できない状態です。
時間を置けば回復する可能性があります。ただし、サーバーが過負荷の時に必ず503を返せるとは限りません。
コードだけで犯人は決められない
ステータスコードは大切な手がかりですが、それだけで原因を断定できないことがあります。
例えば404なら、URLの入力ミス、ルーティング設定、デプロイ漏れ、アクセス制御など複数の可能性があります。
開発者は、次の情報も組み合わせて調べます。
- レスポンス本文
- リクエスト内容
- サーバーやアプリのログ
- 発生した時刻と環境
まとめ
- ステータスコード = 「HTTP通信の結果を表す3桁の番号」
- 4xx = 「リクエストをそのまま処理できない」
- 5xx = 「サーバーが処理を完了できない」
- 使い方 = 「原因を決めつけず、調査範囲を絞る手がかりにする」
エラー画面の数字は、怖い暗号ではありません。システムが「何が起きたか」を伝えようとしている短い返事です。
次の記事では、システムと利用者を守る「セキュリティ」について解説します。
ここまでお読みいただきありがとうございました!
QUICK CHECK
よくある質問
4xxなら利用者が悪い、5xxなら開発者が悪いのですか?
責任を決める番号ではありません。4xxは要求をそのまま処理できない状態、5xxはサーバー側で処理を完了できない状態を示す分類です。原因はログや要求内容と合わせて調べます。
次に読むなら?
SECURITYの記事へ進むと、開発や通信の流れを順番に理解できます。
参考資料
用語の定義や仕様を確認するため、公式文書・標準文書を参照しています。リンク先の内容は更新される場合があります。