今さら聞けない!エラーコードの一覧とそれぞれの原因を解説

今さら聞けない!エラーコードの一覧とそれぞれの原因を解説

Webサイトの表示など、インターネットの世界ではHTTPと呼ばれるプロトコルが利用されます。非常に有名なプロトコルであり、エンジニアならば大まかに理解できてるのではないでしょうか。

HTTPでは理解すべきことがいくつもありますが、中でも重要なのはステータスコードです。プロトコルが正常に完了したかを示すもので、エラーコードの場合は適切に対応しなければなりません。

今回は、最初にHTTPのステータスコードについて解説します。その後、エラーコード一覧とその対処法についても解説するため、それぞれ理解を深めてください。

HTTPステータスコードとは

最初に、HTTPのステータスコードとは、どのような仕組みであるのか解説します。

HTTPリクエストの仕組み

WebサーバーなどとHTTPプロトコルで通信すると、Webサーバー側から通信結果について「ステータスコード」が返されます。HTTPのリクエストに対して、Webサーバーでどのような処理結果となったかを示すのです。例えば、処理に成功したか失敗したかを返します。

ステータスコードは、あらかじめプロトコルで規定されているため、その内容を確認するだけで状況の確認が可能です。通信の結果が問題なかったかどうかを素早く確認するために、ステータスコードが用意されていると理解しても良いでしょう。

なお、ステータスコードの中でも、エラーコードには注目しなければなりません。HTTPリクエストが正常に完了していないことを意味するため、適切な対応が求められます。

ステータスコードの種類

ステータスコードは3桁の数字で管理されていて、先頭の数字によって場合分けされています。以下では、それぞれのステータスコードが、それぞれどのような意味合いであるのか、概要についてまとめていきます。

100番台

100番台は「情報レスポンス」と呼ばれるもので、リクエストが受け付けられ、プロセスが続行されている状態を示します。HTTPリクエストは、クライアントとWebサーバーが複数のやり取りを実施するため、どのような状況であるのか示すためのステータスコードなのです。

ただ、100番台のステータスコードを、利用者が確認することはほとんどありません。基本的には、リクエストの裏側で実施されているやり取りであり、エンジニアを含め大半の人が目にする必要のないものです。そのため、コードとして存在はするものの、意識しなくて良いと捉えておきましょう。

200番台

200番台は「成功レスポンス」と呼ばれ、HTTPリクエストが正常に完了したことを示します。Webサーバー側がどのような処理を実施したかによって、詳細が少し異なる部分です。

基本的には200番のステータスコードが示され、利用者はエラーなく処理が完了したことを確認します。様々なツールで、200番のステータスコードを確認できるようになっているため、エンジニアを中心に理解しておくべきコードです。また、エラーコードではないことも、知識として持っておいた方が良いでしょう。

300番台

300番台は「リダイレクションメッセージ」と呼ばれ、リクエストが別のソースに移動したことを示します。Webの世界では、自動的にリダイレクトする仕組みがいくつもあるため、これらが実行された時に300番台が返答されるのです。

ただ、300番台についても、ブラウザなどが自動的に処理するため利用者が確認することはほぼありません。裏側で利用されているステータスコードだと考えて良いでしょう。

なお、リダイレクトの過程で問題が発生すると、以下で解説するエラーコードが示されます。そのため、リダイレクトの失敗については、専用のエラーコードが用意されていません。

400番台

400番台は「クライアントエラーレスポンス」と呼ばれ、クライアント側に問題があることを示します。基本的には、リクエストの形式が誤っているか、リクエストを処理できない状況を示すものです。エラーコードに分類されるため、400番台になった場合は、適切な対応が求められます。

例えば、サーバーに対してリクエストを送ったものの、その内容を理解できないという状況があり得ます。プログラムの内部でHTTPリクエストを作成したものの、文法が間違っている場合などが理由です。エラーコードから原因を予想して、対処できるようになることが求められます。

また、サーバーに対してリクエストしたものの、認証情報が必要となる場合もあるでしょう。この場合は、サーバーのエラーと思われがちですが、クライアント側のエラーとしてエラーコードが表示される仕組みです。

500番台

500番台は「サーバーエラーレスポンス」と呼ばれ、サーバー側に問題があることを示します。クライアントから送信されたリクエストを正常に処理できない状態だと考えましょう。リクエストに問題がある場合は400番台のエラーコードが表示されるため、リクエスト内容には問題がないと考えるべきです。

特に多いのが、サーバーの内部で予期せぬエラーが発生することです。例えば、サーバーのリソースが一時的に逼迫してしまい、処理エラーが発生する可能性があります。突発的な要因によってエラーが発生すると、500番台のエラーコードが表示されると理解しましょう。

また、サーバーで処理するプログラムにバグが含まれていて、例外処理が動作してしまうことがあります。この場合も、HTTPリクエストのレスポンスコードとしては、500番台で表示されてしまうのです。つまり、サーバー自体に問題があるとは限らず、サーバーサイドにエラーがあることを示すコードなのです。

400番台のエラーコードの一覧とその原因


まず、400番台のエラーコード一覧と、その原因や対処法について解説します。

400 Bad Request

400 Bad Requestは「誤ったリクエスト」であり、クライアント側からのリクエストに問題があることを示します。例えば、WebブラウザやHTTPリクエストを含んだプログラムの挙動に問題があるのです。突発的に問題が生じることもあるため、Webブラウザなどインターネットの閲覧であれば、違うパソコンやスマートフォン、異なるブラウザからアクセスしてみると良いでしょう。

また、HTTPリクエストを含んだプログラムの場合、プログラムの実装内容に問題があるかもしれません。例えば、ルールに沿った文法となっておらず、パラメーターの内容が間違っているなどです。この場合は、プログラムを改修しなければ状態が改善されません。

エラーコードの中でも400番は原因が特定しにくいものです。いくつもの原因が考えられるため、発生した状況に応じて少しずつ切り分けしていかなければなりません。

401 Unauthorized

401 Unauthorizedは、「許可されていない」との意味合いであり、アクセス権限がなかったり認証に失敗したりした場合のエラーコードです。基本的には、IDとパスワードの組み合わせに問題が生じている際に表示されます。パスワードで保護された特別な領域にアクセスする場合などに、こちらのエラーコードが示されるかもしれません。

基本的には、入力しているIDとパスワードの組み合わせが誤っているため、これを見直さなければなりません。プログラムでアクセスしている場合は、プログラムの記述方法に問題が生じていることもあるため、その部分も確認しましょう。プログラムに示しているIDとパスワードが誤っていなくとも、文法に誤りがあれば、エラーコードが表示される可能性はあります。

また、クライアント側には何の問題がなくとも、サーバー側のエラーによって認証できない場合もあるかもしれません。この場合、クライアント側でできることはないため、サーバー側の復旧を待つしかなくなります。

403 Forbidden

403 Forbiddenは、「アクセス禁止」を示すエラーコードで、Webサーバー側の設定でアクセスが禁止されていることが大半です。アプリケーションによっては、管理者のみがアクセスできる領域などが用意されていて、その部分にはアクセス制限などが適用されています。そのような領域に対してHTTPリクエストを送信すると、こちらのエラーコードが表示されるのです。

ただ、サーバー管理者の意図とは関係なく、こちらのエラーコードが表示されることがあるかもしれません。これはサーバー側の設定ミスだと考えられるため、サーバーの管理者に問い合わせて確認してもらいましょう。サーバーの設定状況は、クライアント側で変更できるものではないため、権限設定などを修正してもらうしかありません。

また、サーバーによっては、VPN接続などを利用した特定のIPアドレスから接続できるような設定になっている可能性があります。VPN接続が切れていると、このようなサーバーには接続できないため、もし利用しているならばこれらも確認すべきです。

404 Not Found

404 Not Foundは、「アクセスしたリソースが見つからない」ということを示すエラーコードです。リクエストのURLが誤っているか、Webサーバー側でリソースが削除されているかのどちらかと考えましょう。多くの場合、URLのスペルが誤っているため、正しく入力できているか再確認することからスタートします。

もし、URLのスペルなどに間違いがないならば、サーバーにリソースがないことが問題でしょう。可能であればサーバーの管理者に問い合わせ、状況を確認してもらう必要があります。

408 Request Timeout

408 Request Timeoutは「サーバータイムアウト」とも呼ばれるもので、所定の時間内に完全なリクエストが送信されなかったことを意味します。クライアント側から必要な情報が届かなかったことで、完璧に処理できなかった状態です。

タイムアウトが発生する原因は幅広く、例えばネットワークの遅延が考えられます。ネットワークの利用者が多く、速度が極端に遅くなってしまうと、このようなエラーコードが表示されるのです。また、パソコンに負荷がかかっていて、HTTPリクエストをスムーズに送信できない場合も、エラーコードが表示される可能性があります。

500番台のエラーコードの一覧とその原因


続いては、500番台のエラーコード一覧と、その原因や対処法について解説します。

500 Internal Server Error

500 Internal Server Errorは「サーバーの内部エラー」であり、その原因や対処法は多岐に渡ります。基本的に、エラーメッセージだけでは状況を特定できないため、その他のログ情報などを含めて最終的な判断や対処が必要です。

例えば、ディレクトリのパーミッションに設定誤りがあり、プログラムが実行できないかもしれません。また、そもそもプログラムの内部にバグが含まれていて、適切に処理できていないことが原因とも考えられます。他にも、.htaccessの記述方法に問題があり、サーバーが適切に起動できていないかもしれません。

多くの原因が考えられるため、一概にどこから確認すれば良いとも言い切れません。少しずつ状況を切り分ける必要があると考えましょう。

502 Bad Gateway

502 Bad Gatewayは「サーバーの負荷によりレスポンスできない状態」を示すエラーコードです。例えば、チケットの予約サイトで大量のアクセスが発生し、サーバーが適切にレスポンスできなくなるとエラーコードが表示されるかもしれません。また、DDoS攻撃によりサーバーリソースがひっ迫しているような状況でも表示される可能性があります。

多くの場合、一時的な負荷によってリソースがひっ迫していることが原因です。そのため、時間を空けてからアクセスすると状況が改善されるでしょう。ただ、継続的にエラーコードが表示され続けるならば、リソースの増強など根本的な対策が必要です。

503 Service Unavailable

503 Service Unavailableは「一時的にサーバーへとアクセスできない」状態を示すエラーコードです。上記のエラーコードと似ていますが、プログラムの誤作動により処理できない場合や、サーバーがレスポンスの限界を迎えた場合に表示されやすくなっています。

突発的な負荷に起因するものならば、時間を開けてアクセスすることで改善されるでしょう。ただ、データの転送容量やプログラムの処理内容に起因するものならば、プログラムの改修などが必要です。

まとめ

HTTPプロトコルで重要なステータスコードと、特に重要となるエラーコードについて解説しました。今や当たり前のように利用されている技術ですが、エラーコードをすべて理解できている人は、意外にも少ないのではないでしょうか。正しく理解できていない部分があったならば、この機会に理解を深めておきましょう。

トラブルの発生に備えるならば、ステータスコードの中でもエラーコードに注目しなければなりません。400番台と500番台がこれに該当するため、これらは特に理解しておきましょう。エンジニアは、障害の検知などを実装することもあるため、理解を深めておかなければ、活躍できない可能性があります。

SHAREこの記事をシェアする

admin