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

Webサイトの表示など、インターネットの世界ではHTTPと呼ばれるプロトコルが利用されます。非常に有名なプロトコルであり、エンジニアならば大まかに理解できているのではないでしょうか。
HTTPでは理解すべきことがいくつもありますが、中でも重要なのはステータスコードです。プロトコルが正常に完了したかを示すもので、エラーコードの場合は適切に対応しなければなりません。
今回は、最初にHTTPのステータスコードについて解説します。その後、エラーコード一覧とその対処法についても解説するため、それぞれ理解を深めてください。
HTTPステータスコードとは
最初に、HTTPのステータスコードとはどのような仕組みであるのか解説します。
HTTPリクエストの仕組み
WebサーバーなどとHTTPプロトコルで通信すると、Webサーバー側から通信結果について「ステータスコード」が返されます。HTTPのリクエストに対して、Webサーバーでどのような処理結果となったかを示すのです。例えば、処理に成功したか失敗したかを返します。
ステータスコードはあらかじめプロトコルで規定されているため、その内容を確認するだけで状況を把握できます。通信の結果が問題なかったかどうかを素早く確認するために、ステータスコードが用意されていると理解してよいでしょう。
なお、ステータスコードの中でもエラーコードには注目が必要です。HTTPリクエストが正常に完了していないことを意味するため、適切な対応が求められます。
ステータスコードの種類
ステータスコードは3桁の数字で管理され、先頭の数字によって分類されます。以下では、それぞれのグループがどのような意味を持つか概説します。
100番台
100番台は「情報レスポンス」で、リクエストが受け付けられ、処理が続行されている状態を示します。HTTPのやり取りでは複数回のやり取りが行われることがあり、その状況を示すためのコードです。
ただし、100番台のステータスコードを利用者が目にすることはほとんどありません。基本的には裏側でのやり取りに使われるため、日常的に意識する必要は低いと考えてください。
200番台
200番台は「成功レスポンス」で、HTTPリクエストが正常に完了したことを示します。サーバーが実行した処理に応じて詳細は異なりますが、一般的に200番のコードが返ればエラーなく処理が完了したと判断できます。
各種ツールで200番を確認できるため、エンジニアは把握しておくべきコードです。なお、200番台はエラーではありません。
300番台
300番台は「リダイレクションメッセージ」で、リクエスト先が別の場所へ移動したことを示します。Webでは自動的にリダイレクトが起きることが多く、その際に300番台が返されます。
こちらもブラウザが自動的に処理するため、利用者が直接確認することは少ないでしょう。リダイレクトの過程で問題があれば、別途エラーコードが返されます。
400番台
400番台は「クライアントエラーレスポンス」で、クライアント側に問題があることを示します。主にリクエストの形式が誤っている、あるいは処理できない状況が該当します。エラーコードに分類されるため、発生した場合は適切な対応が必要です。
例えば、プログラムで生成したHTTPリクエストの文法が間違っている場合や、認証情報が欠けている場合などが考えられます。状況に応じて原因を切り分け、対処してください。
500番台
500番台は「サーバーエラーレスポンス」で、サーバー側に問題があることを示します。クライアントからのリクエストに問題がない場合に表示されることが多いです。
具体的にはサーバー内部で予期せぬエラーが発生したり、リソース不足が起きたりすることが原因になります。また、サーバー側のプログラムにバグがあり例外が発生する場合もあります。原因の特定にはサーバーログ等の情報が必要です。
400番台のエラーコードの一覧とその原因

ここでは、400番台の代表的なエラーコードと原因、対処法を解説します。
400 Bad Request
400 Bad Requestは「誤ったリクエスト」で、クライアント側からのリクエストに問題があることを示します。ブラウザやHTTPクライアントの挙動に問題がある場合や、プログラムで生成したリクエストの内容に誤りがある場合などが該当します。
ブラウザ利用であれば、別の端末や別ブラウザで再試行することから始めるとよいでしょう。プログラム側であれば、リクエストの文法やパラメーターを確認し、必要なら修正してください。
401 Unauthorized
401 Unauthorizedは「認証失敗」や「許可されていない」を意味し、アクセス権限がない、あるいは認証に失敗した場合に返されます。一般的にはIDとパスワードの組み合わせが誤っている場合に表示されます。
入力情報を再確認してください。プログラムでのアクセス時は、認証情報の送信方法やヘッダーの記述が正しいかも確認しましょう。サーバー側の問題で認証が通らない場合は、サーバー管理者の対応を待つ必要があります。
403 Forbidden
403 Forbiddenは「アクセス禁止」を示し、サーバー側の設定でアクセスが制限されていることが多いです。管理者のみがアクセスできる領域や、特定IPからのアクセスを制限する設定などが該当します。
サーバーの設定ミスで意図せず403が返る場合もあるため、その際はサーバー管理者へ確認してください。VPN接続やIP制限が原因であれば、それらの接続設定も確認しましょう。
404 Not Found
404 Not Foundは「リソースが見つからない」ことを示します。URLのスペルミスや、サーバー上で対象リソースが削除されていることが主な原因です。
まずURLを確認し、誤りがなければサーバー管理者に状況を問い合わせてください。
408 Request Timeout
408 Request Timeoutは、所定の時間内に完全なリクエストが送信されなかったことを意味します。ネットワーク遅延や、クライアント端末の負荷などが原因で発生します。
ネットワーク状態や端末の負荷を確認し、必要に応じて再試行してください。
500番台のエラーコードの一覧とその原因

以下では、500番台でよく見られるエラーコードとその原因、対処法を説明します。
500 Internal Server Error
500 Internal Server Errorはサーバー内部のエラーであり、原因や対処法は多岐にわたります。エラーメッセージだけで原因を特定することは難しく、サーバーログなどの追加情報を元に切り分けが必要です。
例として、ディレクトリのパーミッション誤設定やプログラム内のバグ、.htaccessの記述ミスなどが考えられます。原因に応じて、ファイル権限の確認やプログラム修正、設定の見直しを行ってください。
502 Bad Gateway
502 Bad Gatewayはゲートウェイやプロキシが不正な応答を受け取った場合に返されます。例えば、バックエンドサーバーが過負荷で応答できない場合や、外部サービスからの異常応答が原因で発生します。
一時的な負荷が原因であれば時間を空けて再試行することで改善する場合があります。継続的に発生する場合は、サーバーリソースの増強や構成の見直しが必要です。
503 Service Unavailable
503 Service Unavailableは一時的にサービスが利用できない状態を示します。サーバーの過負荷やメンテナンス、プログラムの不具合などが原因で発生します。
一時的な事象であれば時間を置いて再試行してください。継続的に発生する場合は、原因に応じてキャパシティ増強やプログラムの改修を検討してください。
まとめ
HTTPプロトコルで重要なステータスコードと、特に注目すべきエラーコードについて解説しました。現在広く利用されている技術ですが、すべてのエラーコードを把握している人は少ないかもしれません。理解できていない部分があれば、この機会に確認しておきましょう。
トラブル対策としては、ステータスコードの中でも400番台と500番台に注目することが重要です。エンジニアは障害検知の仕組みを実装することがあるため、これらを理解しておくと対応や活躍の幅が広がります。