「404 Not Found」「500 Internal Server Error」。Webを使っているとたまに見かけるこれらのメッセージ、何を意味しているのか説明できますか?
これらはHTTPステータスコードと呼ばれるもので、Webの通信結果を数字で表したものです。非エンジニアでもこの仕組みを知っておくと、問題が起きたときの状況判断に役立ちます。
この記事でわかること
- HTTPステータスコードとは何か
- 200・301・404・500など主要なコードの意味
- ステータスコードがわかると何が嬉しいか
- IT現場でのステータスコードの活用
HTTPステータスコードとは?
HTTPステータスコードとは、Webサーバーがリクエストの処理結果をブラウザ(クライアント)に伝えるための3桁の数字です。
「リクエストを受け取って正常に処理した」「このページは存在しない」「サーバー側でエラーが起きた」といった状況を、数字で標準化して伝える仕組みです。
ステータスコードの分類
ステータスコードは先頭の数字で大まかに分類されています。
| 先頭 | 意味 | 代表例 |
|---|---|---|
| 1xx | 処理中(インフォメーション) | 100 Continue |
| 2xx | 成功 | 200 OK |
| 3xx | リダイレクト(転送) | 301 Moved Permanently |
| 4xx | クライアント側のエラー | 404 Not Found |
| 5xx | サーバー側のエラー | 500 Internal Server Error |
「4」で始まれば「リクエストした側の問題」、「5」で始まれば「サーバー側の問題」という大まかな判断ができます。
よく見るステータスコードの意味
200 OK
最も基本的な成功コード。「リクエストを受け取り、正常に処理した」という意味です。通常のWebページ閲覧やAPIレスポンスが成功したときに返ります。
301 Moved Permanently
「このURLは別のURLに永久に移動した」という意味です。URL変更やサイト移転時に使います。検索エンジンのインデックスを新URLに引き継ぐ目的でも使われます。
400 Bad Request
「リクエストの形式が正しくない」という意味です。送ったデータが必要な形式を満たしていない場合などに返ります。
401 Unauthorized
「認証が必要」という意味です。ログインしていない状態でアクセス制限のあるページにアクセスしたときなどに返ります。
403 Forbidden
「アクセス権限がない」という意味です。認証はされているが、そのリソースへのアクセス権限がない場合に返ります。
404 Not Found
「リクエストしたURLにコンテンツが存在しない」という意味です。最もよく見るエラーコードの一つです。URLのタイポ、ページが削除された、リンクが古いといった場合に発生します。
500 Internal Server Error
「サーバー内部でエラーが発生した」という意味です。アプリケーションのバグ、サーバーの設定ミスなど、サーバー側の問題で発生します。
503 Service Unavailable
「サービスが一時的に利用できない」という意味です。サーバーのメンテナンス中や、アクセス集中によりサーバーが処理できない場合に返ります。
身近な例で考えると
宅配便の配達に例えてみます。
- 200 OK:「正常に届けました」
- 301:「この住所は引っ越しました。新住所に再送します」
- 404:「この住所は存在しません。届けられませんでした」
- 500:「配送センター内部でシステムトラブルが起き、処理できませんでした」
- 503:「現在満杯でお預かりできません。少し後で再試行してください」
IT現場ではどう使われるか
障害調査:システムトラブルが起きたとき、ステータスコードから「どちら側の問題か」を判断します。4xxならリクエスト側の問題、5xxならサーバー側の問題と切り分けられます。
APIの設計:APIが返すステータスコードを設計するのもエンジニアの仕事です。「成功したら200、データが見つからなければ404、認証エラーなら401」といった形で設計します。
SEO(検索エンジン最適化):404が多発するとサイトの品質評価に影響します。301リダイレクトを適切に設定することで、URL変更後もSEO評価を維持できます。
初心者がつまずきやすいポイント
404とサーバーエラーを同列に見てしまう
404はクライアント側の問題(URLが間違い)、500はサーバー側の問題です。責任の所在が違います。システムに問題が起きたときは「どちらのコードか」を確認することが重要です。
400エラーを全部「ネットワークエラー」と思いがち
4xxはネットワーク問題ではなく、リクエスト内容の問題です。送るデータの形式・認証情報の不備などが原因のことが多いです。
ステータスコードがない場合はエラーがないと思う
稀に、エラーが起きているにもかかわらず200を返すよう設計されたAPIもあります(エラーハンドリングが不完全な場合)。ステータスコードだけでなくレスポンスの内容も確認することが大切です。
関連用語
- レスポンスヘッダー:ステータスコードを含むサーバーからの返答情報
- リダイレクト:あるURLへのアクセスを別のURLに転送する処理
- エラーページ:404や500が発生したときにユーザーに表示するページ
さらに学ぶなら
HTTPとWebの仕組みを体系的に学びたい方には、FEXシリーズのWebの仕組み入門講座がおすすめです。