【Web初心者】HTTPのステータスコード

本記事では、サーバに対してHTTPのリクエストを送信した際に返ってくるHTTPのステータスコードについて説明していきます。

ステータスコードとは

Webブラウザからのファイルや画像データの要求に対し、WebサーバはHTTPレスポンスを返すことで応答します。このHTTPレスポンス内に含まれるWebサーバ内での処理結果を数字で表したものがステータスコードです。

ステータスコードは3桁の数字で構成されており、レスポンスの種類によって100番台から500番台の先頭の数字の違いで5つに分類されています。

ステータスコードの先頭の数字によって区別することで、クライアントは先頭の数字を見ることにより、大まかにWebサーバがどのような種類のレスポンスを返却してきたのかを理解することが可能となっています。

ステータスコードの種類

ここからは、実際に5つに分類されているステータスコードについて、概要と実際の代表的な例を出して紹介していきます。

情報

100番台は、リクエスト送信後のサーバでのリクエスト処理中であることを通知するステータスコードです。Webサーバがデータの受け入れが可能であるかどうかなどの一時応答に使用されることが多いです。

受け取ったクライアント側は、リクエストをそのまま継続して送信し続けるか、あるいはリクエストの再送信を行うかの判断材料にすることができます。

100 continue

成功

200番台は、リクエストを正常にサーバが受信したことを通知するステータスコードです。

クライアントは、自分がリクエストしたHTMLや画像などのデータを受け取ることができます。

200 OK  リクエスト成功

リクエストが成功したことを示し、GETの場合にはレスポンスボディに内容が入ってきます。

201 Created リソースの作成成功

リソースを新たに作成したことを示します。主にPOSTやPUTのレスポンスとして返され、レスポンスボディには新しく作成されたリソースの中身が入ってくることが多いです。

転送

300番台は、HTTPリクエストに対してWebブラウザ側で転送処理などの追加の処理が必要となってくることを通知するステータスコードです。

主にWebサイトのURLが変更されて、新規ページにリダイレクトされる場合になどに300番台のステータスコードが返却されます。

301 Moved Permanently リソースの恒久的な移動

リクエストで指定したリソースが新しいURLに移動したことを示します。

古いURLを保ったまま、新しいURLに移行する際にこのステータスコードを使用し、新しいURLはレスポンスのLocationヘッダに絶対URLとして入ります。

303 See Other 別URLの参照

リクエストに対しての処理結果が別のURLで取得できることをします。

クライアントエラー

400番台は、Webブラウザなどのクライアント側のエラーであることを通知するステータスコードです。

Webサーバ上にリクエストされたHTMLファイルなどのコンテンツが存在しない場合に400番台のステータスコードが返却されます。

この場合は、エラーを解消しない限り正常なレスポンスを得られないため、クライアント側で問題を解消する必要があります。

400 Bad Request 間違ったリクエスト

リクエストの構文やパラメータが間違っていることを示します。

また、他に適切なクライアントエラーが存在しない場合、クライアントにとって未知の400番台のステータスコードが返却された場合にも400と同じ扱いで処理されるようになっています。

401 Unauthorized アクセス権不正

適切な認証情報を持たずにリクエストを行ったことを示します。

レスポンス内の、WWW-Authenticateヘッダでクライアントに対して認証方式を返却し、basicであれば基本認証が必要であることなどの判断材料となります。

404 Not Found リソース不在

指定したリソースが見つからないことを示し、最も多く目にするステータスコードの1つです。

サーバエラー

500番台は、Webサーバ側に起因する問題によってWebサイトにアクセスできないなどのエラーが発生したことを通知するステータスコードです。

Wenサーバにアクセスが集中しすぎて高負荷状態となり、一時的にリクエストを受けたコンテンツを返却できない場合など、何らかのエラーによってWebサーバがリクエストに応答できない状態を表しています。

500番台エラーの場合には、サーバ側のエラーが解消することによって、クライアント側からは同一のリクエストを再度送ることによって正常なレスポンスを得られる可能性が高いです。

500 Internal Server Error サーバ内部エラー

サーバ側で何らかの異常が生じていて、正常なレスポンスを返却できないことを示します。

500エラーは、他に適切なサーバエラーを示すステータスコードがない場合や、クライアントにとって未知の500番台のステータスコード返ってきた場合にも500エラーと同じ扱いがされます。

503 Service Unavailable サービス停止

メンテナンスなどの理由で、一時的にサーバにアクセスできないことを示します。

レスポンスヘッダ内のRetry-Afterでおよそ何秒後にサービスが再開されるかを通知されている場合もあります。

最後に

本記事で紹介したように、ステータスコードが先頭の数字で分類されていることで、私たちクライアント側は、数字を見ればサーバがどのようなレスポンスを返しているのかを理解でき、どのような対処をすればいいのかという大枠をすることができます。

Web開発でデバッグなどをする際にステータスコードをパッと確認しただけでまず、何に起因したエラーが発生しているのか、などの原因にたどり着くスピードが速くなり、開発効率も上がってきます。

特にリクエストが失敗した際の404エラーや500エラーなどが、目にする機会の多いステータスコードかと思いますので、是非覚えていってください!

他にも、Web関連の記事やプログラミングに関する記事を書いていますのでそちらもぜひご覧ください。