Webブラウザでサイトにアクセスしたとき、裏側ではHTTPという通信プロトコルがやり取りを行っています。
その際にサーバーからクライアントへ返されるHTTPステータスコードは、リクエストの処理結果を数値3桁で表した情報であり、Web開発やサーバー運用において非常に重要な役割を果たします。
本記事では、HTTPステータスコードの基本的な意味と種類、各番号台の分類について詳しく解説します。
200・301・404・500といった代表的なコードから、リダイレクトやエラーの仕組みまで、Web通信の基礎を学びたい方にとって役立つ内容でしょう。
HTTPステータスコードとは?基本的な意味と役割
それではまず、HTTPステータスコードの基本的な定義と、HTTP通信における役割について解説していきます。
HTTPステータスコードはHTTP(HyperText Transfer Protocol)においてサーバーがクライアントのリクエストに対して返す3桁の数値コードです。
このコードによって「リクエストが成功したか」「エラーが発生したか」「リダイレクトが必要か」といった処理結果をクライアントに伝えることができます。
HTTPステータスコードは5つのカテゴリに分類されます。
1xx(情報):リクエストを受け取り処理を継続中
2xx(成功):リクエストが正常に処理された
3xx(リダイレクト):処理完了のためさらなるアクションが必要
4xx(クライアントエラー):クライアント側のリクエストに問題あり
5xx(サーバーエラー):サーバー側で処理に失敗した
ステータスコードがWeb開発で重要な理由
ステータスコードはWebアプリケーション開発においてAPIのレスポンス設計やエラーハンドリングの基準となる重要な情報です。
適切なステータスコードを返すことで、クライアントアプリケーションが処理結果を正確に判断し、ユーザーへの適切なフィードバックを行えるようになります。
SEOの観点でも、301リダイレクトや404エラーなどのステータスコードはGoogleなどの検索エンジンのクロール動作に直接影響するため、正確な設定が重要でしょう。
ステータスコードの構造とレスポンスライン
HTTPレスポンスの最初の行(ステータスライン)には、HTTPバージョン・ステータスコード・ステータスメッセージが含まれます。
たとえば「HTTP/1.1 200 OK」という形式で、バージョン・コード・意味が一行に表現されます。
ステータスコードに続くメッセージ(OK・Not Foundなど)は人間向けの説明文であり、プログラムは主に数値コードを参照して動作を決定するでしょう。
HTTPステータスコードの種類と各番号台の意味
続いては、HTTPステータスコードの各番号台について、代表的なコードとその意味を確認していきます。
2xx系:成功を示すステータスコード
2xx系のコードはリクエストが正常に処理されたことを示します。
最も基本的な「200 OK」はリクエストの処理が成功し、レスポンスボディにデータが含まれることを示します。
「201 Created」はPOSTリクエストによって新しいリソースが作成されたことを示すコードで、REST APIでリソース生成後に使われます。
「204 No Content」はリクエストは成功したがレスポンスボディに返すデータがない場合に使用し、DELETE操作などで活用されるでしょう。
3xx系:リダイレクトを示すステータスコード
3xx系はクライアントが追加のアクション(別URLへのアクセス)を行う必要があることを示します。
「301 Moved Permanently」はリソースが恒久的に別のURLへ移転したことを示し、SEO的にはリンクの評価(リンクジュース)が引き継がれる重要なコードです。
「302 Found」は一時的な移転を示し、「304 Not Modified」はキャッシュが有効でサーバーから新たにデータを取得する必要がないことを示します。
| コード | メッセージ | 意味 |
|---|---|---|
| 200 | OK | リクエスト成功 |
| 201 | Created | リソース作成成功 |
| 204 | No Content | 成功・返却データなし |
| 301 | Moved Permanently | 恒久的リダイレクト |
| 302 | Found | 一時的リダイレクト |
| 304 | Not Modified | キャッシュ有効 |
| 400 | Bad Request | 不正なリクエスト |
| 401 | Unauthorized | 認証エラー |
| 403 | Forbidden | アクセス禁止 |
| 404 | Not Found | ページ不存在 |
| 500 | Internal Server Error | サーバー内部エラー |
| 503 | Service Unavailable | サービス利用不可 |
4xx系・5xx系:エラーを示すステータスコード
4xx系はクライアント側のリクエストに問題があることを示し、「400 Bad Request」「401 Unauthorized」「403 Forbidden」「404 Not Found」「422 Unprocessable Entity」などが代表的です。
5xx系はサーバー側の処理エラーを示し、「500 Internal Server Error」「502 Bad Gateway」「503 Service Unavailable」などがよく見られるコードとなります。
4xx系はクライアントが修正できる問題、5xx系はサーバー管理者が対処すべき問題という点が大きな違いでしょう。
HTTPステータスコードの確認方法と活用
続いては、HTTPステータスコードを実際に確認する方法と、開発・運用での活用について見ていきます。
ブラウザの開発者ツールでの確認
ChromeやFirefoxなどのブラウザでF12キーを押して開発者ツールを開き、「Network」タブを確認することでリクエストとレスポンスのステータスコードをリアルタイムで確認できます。
各リクエストの行に表示されるステータスカラムで200・301・404などのコードを視覚的に確認でき、エラーが発生した際のデバッグに非常に役立ちます。
レスポンスヘッダーの詳細も確認できるため、Web開発の必須ツールといえるでしょう。
curlコマンドでの確認
コマンドラインでは「curl -I [URL]」コマンドでHTTPレスポンスヘッダーとステータスコードを確認できます。
スクリプトや自動化の中でHTTPステータスコードを確認・判定したい場合に特に有効な方法です。
「curl -o /dev/null -s -w “%{http_code}” [URL]」のような形式でステータスコードのみを取得することも可能でしょう。
RESTful APIにおけるステータスコードの設計
REST API設計では適切なステータスコードを返すことがAPIの品質を大きく左右します。
リソースの取得成功には200、作成成功には201、削除成功(返却データなし)には204、バリデーションエラーには422、認証エラーには401というように、操作内容に応じた適切なコードを選択することが重要です。
適切なステータスコードを返すAPIはクライアント開発者にとって扱いやすく、エラーハンドリングも直感的に実装できるでしょう。
まとめ
HTTPステータスコードは1xx〜5xxの5カテゴリに分類され、リクエストの処理結果をサーバーからクライアントへ伝える重要な情報です。
200番台の成功・3xx番台のリダイレクト・4xx番台のクライアントエラー・5xx番台のサーバーエラーの各分類を理解することで、Web開発・運用・デバッグの効率が大幅に向上します。
RESTful APIの設計においても適切なステータスコードの選択が品質向上のカギとなるため、各コードの意味を確実に押さえておくことが大切でしょう。