定義
HTTPステータスコードとは、WebブラウザがサーバーにWebページや画像をリクエストした際、サーバーがその処理結果を知らせる3桁の数字による応答信号です。100番台から500番台まで先頭の数字によって、成功、転送(リダイレクト)、クライアント側のエラー、サーバー側のエラーなど、処理結果の状態を明確に伝えます。
先頭の数字を見るだけで結果がわかります
私たちがネットサーフィンをしているとき、スマートフォンはWebサイトのデータが保存されているコンピューター(サーバー)へ絶え間なくリクエストを送っています。このときサーバーは処理を行った後、結果を要約した3桁の数字を返信の先頭に添えて送り返します。これがステータスコードです。
一番大切なポイントは先頭の数字にあります。100番台から500番台まで、先頭の1文字が5つの大きな状態を表しています。200番台は「成功(2xx)」、300番台は主に「別のURLへの転送(3xx)」を意味します(304のようにキャッシュを再利用してよいという例外もあります)。普段スムーズにWebページを閲覧できているなら、画面の裏側でサーバーが200(OK)コードをせっせと返してくれている証拠です。
一方で問題が発生すると、400番台や500番台が現れます。400番台は要求側(クライアント)に問題があることを示し、500番台はプログラムの不具合や過負荷などによってサーバー側で処理できなかったことを意味します。このように先頭の数字を1つ確認するだけで、おおよそどちら側の問題かを推測できます。
ネットでよく見かける代表的なコード
インターネットを使っていて最もよく目にする画面が「404 Not Found」です。これは、要求されたページやファイルがサーバー内に存在しないことを意味します。URLの後ろの詳細なパス(例:/news/123)を打ち間違えたり、サイト管理者が記事を削除したりした際に、存在しないページを探そうとすると404が表示されます。ドメイン名そのものが間違っている場合は通常404ではなく、サイトに接続できないというエラー画面になります。
ログインが必要なページにログインせずアクセスしようとすると、サーバーは「401 Unauthorized」を返すことがあります。ただし実際のWebサイトでは、自動的にログイン画面へ誘導されることがほとんどです。ログインはしているものの管理者専用ページのようにアクセス権限のない場所を開こうとすると「403 Forbidden」が表示されます。403はサーバーが要求自体は理解したものの、権限がないため閲覧を拒絶した合図です。ドアは確かに存在するけれど、開ける鍵を持っていない状態に似ています。
人気チケットの予約や履修登録などでアクセスが殺到した際に見かけるのが「500」や「503」です。500(Internal Server Error)はサーバー内部のプログラムで予期せぬ不具合が起きた状態であり、503(Service Unavailable)はアクセス集中やメンテナンスなどでサーバーが一時的に要求を受け付けられない状態を表します。
もう少し詳しく見ると
もう少し詳しく見ると、ステータスコードは画面に表示されるWebページの本文(ボディ)ではなく、目に見えない通信の見出し(ヘッダー)に含まれて届きます。ブラウザはこの見出しに書かれた数字を真っ先に読み取り、次にどう動くかを判断します。
例えばサーバーが301や302などの300番台コードを返すと、ブラウザはユーザーにエラー画面を見せることなく、指定された新しいURLへ自動的に転送(リダイレクト)します。瞬時に新しいサイトへ切り替わるため、ユーザーは画面の裏で数字がやり取りされたことすら気づきません。
また、エンジニアたちはこのステータスコードを世界共通の標準規格として定めています。アメリカのサーバーでも日本のサーバーでも404は同じ「見つからない」を意味するため、世界中の多種多様なシステムが異なる言語で作られていても、迷わずスムーズに対話できる土台となっています。
よくある誤解
404エラーや500エラーの画面が出るのは、スマホのWi-Fiやネット回線が切れたからだ。
ステータスコードを受け取れている時点で、端末のインターネット接続自体は正常につながっています。404は探しているページがサーバー上にないことを、500はサーバー内部のプログラムでエラーが起きたことを意味します。
日常で出会う場面
Webサイト内のページURLを打ち間違えたときに「404 Not Found」画面が表示される。
チケット予約サイトなどでアクセスが殺到して動かなくなった際、「503」などの500番台エラーが表示される。
ホームページのURLが変更された際、管理者が旧URLに301を設定しておくと、昔のアドレスにアクセスしても自動的に新アドレスへ案内される。
つまり ひとことで
Webサーバーがブラウザからのリクエストをどのように処理したかを知らせる、世界共通の3桁の数字による応答信号です。