HTTPステータスコードの基本 404や500の意味ガイド

HTTPステータスコードは、先頭の数字によって5つのグループに分類されており、その分類さえ分かれば大まかな意味はつかめます。

2xx:リクエストが成功したことを示す

200 OKは最も標準的な成功の応答です。201 Createdは新しいアカウントや投稿などが正常に作成されたことを、204 No Contentは処理は成功したが返す内容がないことを示します。

3xx:別の場所へ転送されることを示す

301 Moved Permanentlyは、ブラウザや検索エンジンに新しいURLへ恒久的に切り替えるよう伝えます。302 Foundは一時的な転送、304 Not Modifiedはブラウザに保存されたキャッシュがまだ有効であることを示します。

400・401・403:リクエストの内容や権限に問題がある

400 Bad Requestはリクエストの形式自体に不備があることを、401 Unauthorizedはログインや認証が必要であることを、403 Forbiddenは本人確認はできているがアクセス権限がないことを示します。401と403は原因が異なる点に注意が必要です。

404・410:ページが見つからない

404 Not Foundは「そのページが存在しない」ことを示す最も一般的な応答です。あまり見かけない410 Goneは、そのページが以前は存在していたものの、意図的に完全に削除されたことを示す点で404と区別されます。

429:一時的にアクセスを制限されている

短時間に大量のリクエストを送った場合など、サーバーが意図的にそれ以上のリクエストの処理を一時的に拒否している状態を示します。多くの場合、どのくらい待てば再試行できるかの目安も併せて返されます。

5xx:サーバー側に問題が起きている

500 Internal Server Errorはサーバー側の汎用的なエラーです。502 Bad Gatewayや503 Service Unavailableは、上位のサーバーやサイト自体が一時的にダウンまたは過負荷状態にあることを、504 Gateway Timeoutは別のサーバーからの応答待ちでタイムアウトしたことを示します。

百の位でグループ分けされている理由

ステータスコードは先頭の数字を見るだけで大まかな分類が分かるように設計されています。1xxは処理中の情報、2xxは成功、3xxは転送、4xxはリクエスト側(クライアント)の問題、5xxはサーバー側の問題です。この仕組みのおかげで、見たことのないコードでも先頭の数字だけである程度対応の見当がつけられます。

ブラウザや検索エンジンの挙動にも影響する

301の転送は元のページの評価の多くを新しいURLに引き継がせる働きがあるのに対し、302は一時的な移動であることを示し評価は元のページに残ります。サイトの引っ越しの際にはこの違いが重要になります。ブラウザのキャッシュの扱いも、サーバーが返す2xxや3xxのコードの種類によって変わります。

よくある質問

401と403はどう違いますか?

401 Unauthorizedはサーバーがまだユーザーを認識できていない(ログインが必要な)状態を、403 Forbiddenはユーザーを認識した上でアクセスを許可しないと判断した状態を示します。

普段は問題ないサイトで502や503が出るのはなぜですか?

多くの場合、サーバーの再起動中やアクセス集中による一時的な過負荷、あるいは裏側で連携している別のサービスに接続できなくなっているなど、一時的な問題が原因であり、サイト自体が恒久的に壊れているわけではないことがほとんどです。