HTTPステータスコード一覧
HTTPステータスコード一覧 #
HTTPステータスコードとは一番上のレスポンス行で表示される3桁の番号のことです。クライアントのWebブラウザとサーバ間ではHTTPリクエストに対してレスポンスを返すことをします。HTTPレスポンスではクライアントのWebブラウザに結果を表示するためにサーバで処理を実行し、「レスポンス行」「メッセージヘッダー」「エンティティボディ」の内容でテキストで表示されます。
Webサーバのアプリケーションが返す一番多いステータスコードは「200」です。200は正常に処理ができたことを意味しているため、私たちがWebサイトを見ている時には表示せずに、結果だけがWebページの表示という形で表示されますので気が付きにくいです。しかし、よく目にするのはエラー出てしまった時です。Webサイトを閲覧しようとURLを入力したときに、Webブラウザで「404 Not Found 」や「500 Internal Server Error」や「503 Service Unavailable」などが表示してしまったことはありませんか?これは、何らかのエラーがあってWebページが見れなくなってしまったときの結果がWebブラウザに表示した例です。以下は種別と主な各ステータスコードの説明をまとめましたので御覧ください。 参考:HTTP レスポンスステータスコード(MDN web docs:mozilla)
HTTP 100番台 Informational(情報レスポンス)
クライアントからのリクエストを受け入れ可能で、継続して処理されている状態です。処理が始まった時点のタイミングなので処理中の状態であるが、httpsプロトコルによるリクエストとレスポンスは一瞬の出来事のため人間には体感できない程の速さで意識をすることは殆どありません。大容量の動画の処理の場合はプロトコル切り替えにより処理に少し時間がかかりタイミングが少しずれることもあります。
| HTTPステータスコード | 説明 | 状態 |
|---|---|---|
| 100 Continue | リクエスト継続可能 | 正常 |
| 101 Switching Protocol | プロトコルの切り替え | 正常 |
| 102 Processing | 処理中 | 正常 |
| 103 Early Hints | 早期に予測されるヘッダを伝達 | 正常 |
HTTP 200番台 Success(成功レスポンス)
クライアントからリクエストがサーバに送られ理解されて受理された状態です。成功した後はリクエストに応じてサーバの方で処理をしクライアントにレスポンスを返します。私たちが普段インターネットを利用するに当たりWebページを見る際もWebブラウザを利用しますが、Google Chromeの開発モードウィンドウの「Network」タブで、Webページ内に読み込まれている正常に処理されたファイル群は「Status Code 200」と確認をすることが出来ます。
| HTTPステータスコード | 説明 | 状態 |
|---|---|---|
| 200 OK | リクエストが正常に処理できた | 正常 |
| 201 Created | リクエストが成功してリソースの作成が完了 | 正常 |
| 202 Accepted | リクエストを受け取ったが処理はされていない | 正常 |
| 203 Non-Authoritative Information | リクエストが成功したものの、変換プロキシによって 元のサーバーの200(OK)レスポンスからペイロードが変更された |
正常 |
| 204 No Content | リクエストに対して送信するコンテンツは無いがヘッダは有用である | 正常 |
| 205 Reset Content | クライアントにドキュメントビューをリセットするように指示 | 正常 |
| 206 Partial Content | 要求された範囲のデータやリソースの一部分だけのリクエストが成功 | 正常 |
HTTP 200 OK
HTTP 200 OKを確認するには、Google ChromeでF12キーを押すと開発ウィンドウが表示され状況を見ることができます。「Status」が200となっているファイルは正常に処理され画像であれば表示され、htmlやcssファイルであれば正常に読み込まれていることが確認でき、javascriptであれば読み込まれ動作している状態を示しています。
HTTP 300番台 Redirection(リダイレクション)
リクエストを完了させるために追加的な処理が必要です。利用例を元に説明をしますと、「300 Multiple Choice」はパソコン画面とスマートフォン画面でWebアプリケーションが別れている場合に用います。レスポンシブWebデザインでワンソースのページで表現が難しい場合に2つのサイトを作成しユーザエージェントに応じて分散します。「301 Moved Permanently」は301リダイレクトと呼ばれ、恒久的にページ移動をする場合に用いられます。Webサイトリニューアルの際に、ディレクトリを整備し変わった場合に各ページに対してリダイレクト設定をし強制的にページ移動をします。
| HTTPステータスコード | 説明 | 状態 |
|---|---|---|
| 300 Multiple Choice | リクエストに対して複数のレスポンスがあることを示す | 正常 |
| 301 Moved Permanently | 恒久的に移動する | 正常 |
| 302 Found | 一時的に移動する ※ Google検索エンジンの検索リストでは旧URLを示すため 将来的に元のURLに戻すなどの時に利用します。 |
正常 |
| 304 Not Modified | 更新されていない ※正常に処理されていますがブラウザキャッシュの内容を表示している為、 サーバからダウンロードをしていません。 |
正常 |
HTTP 301 Moved PermanentlyとHTTP 302 Foundの違い
HTTP 301とHTTP 302のリダイレクトは「移転が恒久的であれば301」で「移転が一時的であれば302」を利用します。利用例はHTTP 301 Moved Permanentlyであれば、Webサイトのリニューアルでディレクトリが変わった場合に恒久的にリダイレクトをするためHTTP301を利用します。HTTP 302 FoundはWebサイトがリニューアル中で一時的にURLが異なる為、いずれ元のURLに戻す場合や、グローバル化に対応したサイトで多言語化をしている場合に国別のIPアドレスで振り分けることなどで利用されることがあり、どれも一時的な移動で最終的には元のURLに戻ることを意味します。Google検索のSEOでは301と302のリダイレクト方法でも同じように扱われることになったため、旧URLのページランクが引き継がれるようになります。
HTTP 400番台 Client Error(クライアントエラー)
4xx系のエラーはクライアント(ユーザ)側で操作や入力に不備があった際に出てしまうエラーです。もしこの系統のエラーが出てしまったら一度ご自身が行った作業を見直して見ましょう。
| HTTPステータスコード | 説明 | 状態 |
|---|---|---|
| 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 | ファイルが削除されたため、ほぼ永久的にWebページが存在しない | エラー |
| 411 Length Required |
Content-Lengthとはリクエストヘッダに送るデータ容量が書いてある項目 サーバの方でContent-Lengthヘッダが無いためアクセスを拒否した |
エラー |
| 412 Precondition Failed | ヘッダで定義された前提条件が満たされていない場合にアクセス拒否される | エラー |
| 413 Payload Too Large | ファイルをアップロードする際にサーバで定めたファイル容量の 上限を超えてしまった為アクセス拒否された |
エラー |
| 414 URI Too Long | 指定したURLが長すぎる | エラー |
| 415 Unsupported Media Type | サーバで許可していないリクエストの種類の為アクセス拒否された | エラー |
| 416 Range Not Satisfiable | サーバーがリクエストされた範囲(容量)を提供できない | エラー |
| 417 Expectation Failed | サーバが拡張されたステータスコードを返すことが出来ない | エラー |
| 422 Unprocessable Entity | WebDAVの拡張ステータスコード リクエストは適正だが意味が異なるためサーバが返すことが出来ない |
エラー |
| 423 Locked | WebDAVの拡張ステータスコード リクエスト内容がロックされているためサーバが返すことが出来ない |
エラー |
| 425 Too Early | サーバが繰り返し処理が発生される可能性のあるリクエストと判断したため 処理が出来ないと判断した ※ 無限ループでサーバに高負荷がかかるリスクの可能性がある為 |
エラー |
| 426 Upgrade Required | Upgrading to TLS Within HTTP/1.1の拡張ステータスコード HTTP/1.1にアップグレードが必要な為、サーバが処理できない |
エラー |
| 429 Too Many Requests | 一定時間内にリクエスト数が多すぎるためアクセスを拒否した ※ DDos攻撃によるサーバダウンのリスクを回避する為 |
エラー |
| 431 Request Header Fields Too Large | リクエストヘッダーが長すぎるためサーバ処理が拒否した | エラー |
HTTP 500番台 Server Error(サーバエラー)
5xx系のエラーはサーバ側にありシステム管理者が対応中でクライアント側では復旧するまで何も出来ることはありません。サーバ障害が復旧するまでは時間がかかりますので、ある程度の時間を置いてから再度アクセスをすると正常に表示することがあります。レンタルサーバやクラウドサービスでは障害情報という形でお知らせを配信している企業もあります。また有名な大規模サービスで大規模な障害が起きてしまうとtwitterなどのSNSで騒がれていたり、ポータルメディアのニュース記事で取り上げられていることもありますので目にすることもあるかと思います。システムが復旧したあとに再度アクセスをするとWebサービスやクラウドなどのシステム環境に接続出来るようになりますので慌てず、まずは状況を知るようにしましょう。
| HTTPステータスコード | 説明 | 状態 |
|---|---|---|
| 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で定義されている拡張ステータスコード URLを返すコンテンツで配置ミスなどによる内部サーバエラー |
エラー |
| 507 Insufficient Storage |
WebDAV拡張ステータスコード サーバで処理するためのストレージ容量不足 |
エラー |
| 508 Loop Detected | 主に開発中のプログラム処理で、無限ループに陥ったためサーバーが操作を終了 | エラー |
| 510 Not Extended | 主に静的ファイルへのアクセス集中による一時的に表示されるエラー | エラー |
| 511 Network Authentication Required | ネットワーク認証が必要 | エラー |
HTTP400番台のエラーとクライアントサイドの対処方法 #
HTTP400番台のエラーがWebブラウザに表示してしまった場合は、クライアントサイト(ユーザ側)で対応が可能です。代表的なものはHTTP 404 Not Foundのエラーですがよく見かけることがあります。原因はWebブラウザに入力したURLがページが存在していないURLの場合に指定したアドレスでページが存在しないという意味でエラー表示になります。写真は403 Forbiddenですが、これは閲覧権限が無く、特定のユーザのみに閲覧権限があるページやディレクトリの場合にエラー表示が出ます。社内のネットワーク環境のみ閲覧できない場合や会員向けWebサイトの場合でディレクトリが特定の会員のみ閲覧可能である為、一般ユーザでは見ることが出来ない等、様々な理由があります。400番台のエラーが出てしまった場合はユーザ側で対応ができますので、原因を考えて対応するようにしましょう
HTTP 401 Unauthorized
HTTP 401 Unauthorizedは「アクセス権がない、または認証に失敗」のことで、原因は認証に必要なIDかパスワードが間違っている場合にでるエラーです。現在ではあまり見られませんが、過去の会員向けWebサイトではエラー画面が作成されていなければWebブラウザのデフォルト表示で「401 Unauthorized」と表示されていました。また正しいIDとパスワードの認証情報を入力してもエラーが出てしまう場合は、サーバ側に問題がある可能性もあります。クライアントサイドで正確に入力してもサーバ側の処理上、結果的にクライアントサイドのエラーが出てしまう場合もありますので、サーバ管理者やWebサイト管理者に連絡を取り解決する必要があります。HTTP 401 Unauthorizedは「正確な認証情報を入力する」と「復旧するまで暫く待つ」の方法しかないためIDとパスワード情報は忘れないように管理しておきましょう。
HTTP 403 Forbidden
HTTP 403 Forbiddenは「アクセス禁止」のことで、原因はクライアントサイドであれば何らかの理由で管理者によってアクセス禁止されている場合と、管理者側ではサーバの設定ミスやプログラムの設置ミスなどが考えられます。クライアントサイトではVPNなどの特定のネットワークからのアクセスのみ閲覧可能であったり、管理者向けのページやディレクトリを閲覧した場合など特定の人向けに設定した場合によく見られます。管理者側での対応は「.htaccess」ファイルの記述方法が誤っていないか確認をすることで、何らかの問題が見つかる可能性があります。
HTTP 404 Not Found
HTTP 404 Not Foundは「Webページが見つからない」のことで、原因はURLのスペルが間違っていることや、リダイレクトの設定が間違っていることなどURLに関係することです。対処方法はURLのスペルを見直して正しいURLに書き換えてページを表示することです。HTTP 404 Not FoundはURLに関係するケアレスミスで多いエラーですので十分に確認をしておきましょう。
HTTP 405 Method Not Allowed
HTTP 405 Method Not Allowedは「送信するクライアント側のメソッドが許可されていない」のことで、原因は許可されていないメソッドでアクセスをした場合に出現するエラーです。HTTPメソッドには、このページの上部でも説明をしましたが「GET」「HEAD」「POST」「PUT」「DELETE」「CONNECT」が存在し各役割があります。例えばセキュリティの観点からPOSTメソッドがサーバ側で無効化されている場合、掲示板のようにサイトに書き込むことが出来ないため、405 Method Not Allowedのエラーが出現することがあります。
HTTP500番台のエラーとサーバ障害の関連性 #
Webサーバ障害の発見の手がかりの一つとして、主にサーバに対してHTTPリクエストを送信するとステータスコードがエラーを返して判明します。システムの中核となるサーバなどで5xx Server Error(サーバエラー)のHTTPステータスコードが表示したら大規模障害に繋がりかねないため、迅速に障害を復旧をするべくインフラエンジニアは対応を実施しています。インフラエンジニアは普段からサーバ監視やサーバの定期的な運用でサーバの正常性を把握していますが、レンタルサーバやクラウドサービスのWebサーバの場合はWebサイト管理者でも直せる内容もあります。500番台のHTTPステータスコードはWebサイト管理者でも把握しておくべきことでエラーになってしまった場合はエラー内容に沿った対処が求められます。ここではHTTPステータスコードをもとにWebサーバ障害との関連性を詳しく解説します。
参考:ウェブページのエラーメッセージ(さくらのサポート情報)
HTTP 500 Internal Server Error
HTTP 500 Internal Server Errorは「何らかのサーバ内部エラー」という漠然とした意味ですので原因究明が難航するエラーです。主な考えられる原因は以下のリストに記載していますが、それでも復旧しなければ別の方法を考えるしかありません。
| 項目 | 内容 | 対処方法 |
|---|---|---|
| ディレクトリのパーミッション | CGI・PHPのパーミッション等に誤りがある | 705または755に設定 |
| .htaccessの記述方法 | 「記述」「書式」「文字コード・改行コード」に問題がある | 正しく記述する |
| PHP情報の取得 | .htaccessでPHP情報を取得している | php.iniファイルを作成し設定する |
| CGI・PHPプログラム | 正しく動作していない | .htaccessの記述の見直しや プログラムの書き方をサーバの仕様に合わせる |
| 画像の保存形式 | サーバが対応していない画像ファイルの形式 | Webページで表示する.jpgや.png形式に 変換して保存しサーバにアップロードする |
HTTP 502 Bad Gateway
HTTP 502 Bad Gatewayは「アクセス集中や転送量が多く、サーバが応答できない場合」などに表示されるエラーです。悪意のある攻撃者よりDDoS攻撃によるシステム全体に負荷がかかってしまっている場合は、レンタルサーバやクラウドサービスを利用している時は、他のユーザや契約をしている会社にも影響が出てしまっているため、サービス提供者は障害情報を出していますのでユーザは状況を確認する必要があります。
共用環境ではないサーバや共用環境のサーバで自身のアカウントだけが事象が出てしまった場合は、以下の原因が考えられます。
| 項目 | 内容 | 対処方法 |
|---|---|---|
| 一時的な負荷 | 瞬間的にサーバへのアクセスが増加したことで、 サーバの処理が出来なかった等 |
時間を置いてからアクセスをする、 アクセスが少ないと思われる時間帯に接続する |
| Webブラウザ | Webブラウザにキャッシュデータが溜まって 負荷がかかってしまっている場合 |
Webブラウザのキャッシュクリアを試みる |
HTTP 503 Service Unavailable
HTTP 503 Service Unavailableは「一時的にサーバにアクセスできずサービスが利用不可能になっている」場合に表示されるエラーです。アクセス転送量が多い、一時的にウェブアクセスが集中している、CGIプログラムが誤作動を起こしているなどが原因として考えられます。
| 項目 | 内容 | 対処方法 |
|---|---|---|
| 一時的な負荷 | 瞬間的にサーバへのアクセスが増加したことで、 サーバの処理が出来なかった等 |
時間を置いてからアクセスをする、 アクセスが少ないと思われる時間帯に接続する |
| 大容量のデータ | サーバ転送容量の限界を超えてしまった | 転送量の多いコンテンツ(音声ファイルや動画など)を 分割して容量を少なくすることを試みる |
| CGIプログラム | プログラムの誤作動によりサーバが処理できない | SSH接続が可能な場合は、設置しているCGIプログラムについて、 動作不良プロセスがあるかどうか確認する |
HTTP 504 Gateway Timeout
HTTP 504 Gateway Timeoutとは「リクエストを送ったサーバからの適切なレスポンスがなくタイムアウトした」のことです。原因はシステムの入り口に存在するゲートウェイやプロキシに対して想定以上の負荷がかかってしまい、応答できずにいる状態でエラー表示してしまう場合があります。
| 項目 | 内容 | 対処方法 |
|---|---|---|
| 一時的な負荷 | 瞬間的にアクセスが増加したことで、 ゲートウェイやプロキシが処理出来なかった等 |
時間を置いてからアクセスをする、 アクセスが少ないと思われる時間帯に接続する |
| 大容量のデータ | ゲートウェイやプロキシに対して 転送容量の限界を超えてしまった |
転送量の多いコンテンツ(音声ファイルや動画など)を 分割して容量を少なくすることを試みる |



