HTTP通信では通信の状態を把握するために通信に対してステータスコードを付与しています。このステータスコードを確認することにより、処理がどうなっているのかを知ることができます。
本記事ではステータスコードの一覧を紹介するとともに、各ステータスコードの意味や対処法などについて説明していきたいと思います。
特にWebページの管理者などはエラーコードだけでなくレスポンスコードについても確認する機会が多いため、本記事を参考にしていただければと思います。
HTTPステータスコード一覧
ステータスコードは100番台から500番台まで存在します。それぞれの種類や意味についてご紹介します。
HTTP 1XX(正常なステータス)
HTTP100番台は処理中の状態を示すコードです。実際の処理は一瞬なのでステータスコードが100番台である時間は非常に短いです。
HTTP100番台はまだ処理中にエラーが発生していない状態であり、エラーステータスはありません。
100番台の詳細は以下の通りです。
・100 Continue:リクエストを継続して処理することが可能です。
・101 Switching Protocol:プロトコルを切り替えている最中です。
・102 Processing:リクエストを処理中です。
・103 Early Hints:早期に予測されるヘッダを伝達中です。
HTTP 2XX(正常なステータス)
HTTP200番台は処理の成功を示すコードです。ページが正常に開かれた場合、裏ではHTTP2XXのステータスコードを送信しています。
200番台の詳細は以下の通りです。
・200 OK:リクエストの処理が正常に完了しました。
・201 Created:リクエストが成功し、新たにリソースの作成が完了しました。
・202 Accepted:リクエストを正常に受付ました(未処理)。
・203 Non-Authoriative Infomation:リクエストは成功しましたが、プロキシサーバを経由しているため信頼できない結果かもしれません。
・204 Non Content:リクエストは正常に受け付けていますが、返信する内容がありません。
・205 Reset Content:リクエストに対して画面をリセットするよう要求を返します。
・206 Partial Content:画面の一部などの部分的な要求に対し、部分的にリクエストを受付ました。
HTTP 3XX(正常なステータス)
HTTP300番台は処理を完了させるために後続の追加処理を行う必要があります。ページのリダイレクトなど、ページへのアクセスというリクエストに対して「他のページへ転送する」という後続処理を追加するような場合に利用します。
追加処理は必要ですが、レスポンスは正常に処理されています。
300番台の詳細は以下の通りです。
・300 Multiple Choice:リクエストに対して複数のレスポンスがあります。
(選択肢を返してレスポンスを選択してもらいます)
・301 Moved Permanently:予め設定した別のページに恒久的にリダイレクトを行います。
(新ページを正として利用したい場合に使用します)
・302 Found:予め設定した別のページに一時的に遷移します。
現行ページを正として利用したい場合に使用します。
・303 See Other:リクエストに対するレスポンスは別のページに存在します。
(レスポンスが欲しければそちらのページからレスポンスを受け取ってください)
・304 Not Modified:データが更新されていません。
※前回からデータが更新されておらず、キャッシュ等よりデータを取得した場合などに使われます。
・305 Use Proxy:プロキシを使用してリクエストを送信してください。
・307 Temporary Redirect:予め設定した別のページに一時的に遷移します。
※302と同様の定義ですが、307の場合はPOSTで処理した場合、GETで取得することができません。
・308 Permanent Redirect:予め設定した別のページに恒久的にリダイレクトを行います。
※301と同様の定義ですが、POSTで処理した場合はPOSTで返す必要があります。
HTTP 4XX(エラーステータス)
HTTP400番台はクライアント側の問題によりエラーとなってしまった場合に利用されるステータスコードです。
普段からインターネットを利用する方であれば「404 Not Found」などは一度は目にしたことがあるのではないでしょうか?
400番台の詳細は以下の通りです。
・400 Bad Request:クライアントのリクエストは無効です。
※受信側の意図にそぐわないリクエストを受け取った場合の一般的なエラーステータスです。
・401 Unauthorized:認証に失敗しました。もしくはアクセス権がありません。
・402 Payment Required:料金が支払われていないのでアクセスできません。
・403 Forbidden:あなたが持つ権限ではこのページを閲覧できません。
・404 Not Found:Webページが見つかりません。
・405 Method Not Allowed:そのメソッドは許可されていないので利用できません。
・406 Not Acceptable:そのリクエストは受け付けられません。
※本来テキストを受信する処理でイメージファイルが送信されるなど、想定外のリクエストが来た場合に使用されます。
・407 Proxy Authentication Required:プロキシサーバの認証が必要です。
・408 Request Timeout:一定時間内に応答が返ってきませんでした。
・409 Conflict:他のデータと競合しているためリクエストが完了できません。
・410 Gone: 要求したコンテンツは存在しません。
・411 Length Required:Content-Lengthヘッダがないため、サーバはリクエストを拒否しました。
・412 Precondition Failed:ヘッダで定義された前提条件と異なるため、サーバはリクエストを拒否しました。
・413 Payload Too Large:アップロードされたファイルはファイル容量の上限を超えているため、サーバはリクエストを拒否しました。
・414 URI Too Long:URLが長すぎるためリクエストは受け付けられませんでした。
・415 Unsupported Media Type:このメディアタイプはサーバで許可されていません。
・416 Range Not Satisfiable:サーバの許容サイズを超える要求のためリクエストは受け付けられませんでした。
・417 Expectaion Failed:サーバは拡張されたステータスコードを返すことができませんでした。
・425 Too Early:このリクエストは繰り返し処理が発生すると判断されたため処理がキャンセルされました。
・429 Too Many Requests:一定時間内のリクエストが多すぎるためサーバはアクセスを拒否しました。
・431 Request Header Fields Too Large:リクエストヘッダーが長すぎるため、サーバは処理を拒否しました。
HTTP 5XX(エラーステータス)
HTTP500番台はサーバ側の問題によりエラーとなってしまった場合に利用されるステータスコードです。
これらの状態を解決するためにはサーバ管理者への確認が必要です。
500番台の詳細は以下の通りです。
・500 Internal Server Error:サーバ側でエラーが発生しました。
・501 Not Implemented:サーバはこのリクエストを解決するのに必要な機能を有していません。
・502 Bad Gateway:このリクエストはゲートウェイ・プロキシサーバにより不正なリクエストと判断されたため拒否されました。
・503 Service Unavailable:現在一時的にサーバへアクセスができない状態です。
・504 Gateway Timeout:一定時間サーバからのレスポンスが無かったためタイムアウトしました。
・505 HTTP Version Not Supported:このHTTPのバージョンはサーバがサポートしていません。
・506:Variant Also Negotiates:レスポンスは内部サーバエラーにより返せませんでした。
※Transparent Content Negotiation in HTTPの拡張ステータスコード
・507 Insufficient Storage:リクエストを処理するためのストレージの容量が足りません。
※WebDAVの拡張ステータスコード
・508 Loop Detected:処理が無限ループされたためサーバは処理を終了しました。
・510 Not Extended:アクセスが集中しているため、リクエストの拡張が必要です。
ステータスコード(エラーコード・レスポンスコード)とは
ステータスコード(エラーコード・レスポンスコード)とは、HTTP通信の状態を表すコードです。
エラーが発生した場合のコード(4XX、5XX)をエラーコード、正常なレスポンスを示すコード(1XX、2XX、3XX)をレスポンスコードと呼びます。
利用者は原則レスポンスコードを意識することはなく、エラーが発生した場合にエラーコードを目にすることがある程度でしょう。
ページの管理者は、通信が正しく行われているかを把握する必要があるため、エラーコードだけでなくレスポンスコードも確認します。
httpステータスコードの確認方法
httpステータスコードの確認方法は、確認したいWebサイトにて「F12」キーを押します。
「F12」キーを押すことにより開発者メニューを開くことができます。そこからネットワークを選択することで、ステータスコードを確認することが可能です。
まとめ
今回ステータスコードの一覧をご紹介しましたが、全てのステータスコードを覚えておく必要はありません。コードによっては通常ほとんど、もしくは全く発生しない物もあるためです。
エラーコードを確認することで、「どこで」「どのような原因で」通信が失敗しているのか把握することができます。
4XX、5XXでクライアント・サーバのどちらを調査するかすぐに把握できますね。
ただし、例えば4XXだからと言って必ずしもクライアントに問題があるとは限りません。
例えば404 Not Foundであればクライアント側でURLを間違えている可能性もありますが、サーバ側でURLが有効になっていない場合にも発生します。
あくまでエラーコードはどこを重点的に調査するかの目安程度にとどめておき、クライアント・サーバの両面からエラー原因を特定する必要があります。