今回は、HTTPステータスコードについてまとめました。
HTTPステータスコードとは、HTTPリクエストに対してWEBサーバーから返ってくるレスポンスコードです。
3桁の数字になっており、意味によって5つのクラス(100~500番台)に分けられています。
- 100番台:情報レスポンス
- 200番台:成功レスポンス
- 300番台:リダイレクトメッセージ
- 400番台:クライアントエラーレスポンス
- 500番台:サーバーエラーレスポンス
100番台から500番台のステータスコードを全て合わせると、種類が非常に多くなります。
その為、全ステータスコードを覚えておくのは難しいです。
こちらの記事では、主に以下の2つの事をまとめています。
■100番台~500番台の意味
■各ステータスコードについて
何かの機会にステータスコードを調べる際には、ぜひ当記事を参考にしてください。
コンテンツ
HTTPステータスコードとは
HTTPステータスコードとは、クライアント側から何かしらのリクエスト(要求)をWEBサーバー側に出した際に、WEBサーバーから返ってくるレスポンスコードです。
このレスポンスコードは、3桁の数字で表されるのが特徴です。
例えば、このような感じの意味を持つレスポンスを3桁数字にして返してきます。
・リクエストがあったURLのページですけど、存在しませんよ
・リクエストがあった処理ですが、正常に受け取って、無事処理できましたよ
・サーバー側で何か問題が発生して、リクエストを正常に処理できませんでしたよ
試しに、ブラウザからどこかのページにアクセスしてみてください。
アクセスしたページが問題なく存在していて、ブラウザ上から見ることが出来れば、200というステータスコードが返ってきています。
逆に、URLを打ち間違えたりして、アクセスしたはずのページを見れなければ、404というステータスコードが返ってきているはずです。
このステータスコードは、大きく分けて100~500番台までが用意されていて、
さらに、各〇〇番台毎に複数のステータスコードが設定されています。
100番台~500番台の意味
まずは、100番台~500番台までの説明をまとめておきます。
100番台 | 情報(Information) | リクエストを受け取って、現在、まだ処理中であることを意味します。 ※見かける機会はほとんどない |
---|---|---|
200番台 | 成功(Success) | リクエストを受け取って、正常に受理までされたことを表すステータスコードです。 |
300番台 | リダイレクト(Redirection) | リダイレクト処理に関するステータスコードです。 |
400番台 | クライアントエラー(Client Error) | クライアン側のエラーに関するステータスコードです。 |
500番台 | サーバーエラー(Server Error) | サーバー側のエラーに関するステータスコードです。 |
HTTPステータスコード一覧
100番台(情報)
100番台のステータスコードは、クライアントからのリクエストを受け取ったが、現在、まだ処理中であることを表しています。
100 Continue【継続】
サーバー側はリクエストを受け取って問題なく処理できており、継続してリクエストを行える状態を表します。
101 Switching Protocols【プロトコル切り替え】
サーバー側がリクエストを継続して処理するために、プロトコルの切り替えを要求しています。
102 Processing【処理中】
サーバー側がリクエストを受け取り処理中であるが、そのリクエストは完了しておらず、処理を継続して行っている状態を表します。
こちらは、WebDAVの拡張ステータスコードです。
※WebDAV(ウェブダブ)とは、クライアント側からWEBサーバー上のファイルやディレクトリを共有、編集できるようにした仕組みのことです。
103 Early Hints【早期のヒント】
実際のHTTPレスポンスヘッダが確定するよりも前に、発生するであろうHTTPレスポンスヘッダを予想して、先に送ってしまう場合に設定するステータスコードです。
これにより、クライアント側は、実際のHTTPレスポンスヘッダが送られてくるよりも早い段階で、送られてくるであろうヘッダ情報を知ることができます。
200番台(正常処理)
200番台は、クライアントからのリクエストした処理を受け取り、正常に処理まで行われたことを表しています。
200 OK
クライアントからのリクエストを正しく処理して、レスポンスを返したことを表します。
例えば、ブラウザからページを閲覧する際に、目的ページが問題なく表示されると、このステータスコードが返されています。
201 Created【作成】
クライアントからのリクエストが成功して、その結果、サーバー上に何かしらのリソースを作成した場合に返されます。
202 Accepted【受理完了】
リクエストを受け取ったことを表すステータスコードです。
※処理自体は、まだ完了していない。
203 Non-Authoritative Information【信頼できない情報】
リクエストが実際の情報ではなく、ローカルやプロキシなどからの情報であるため、信頼できない場合に返されます。
204 No Content【コンテンツ無し】
クライアントからのリクエストを受け取ったが、クライアントに返すべきコンテンツが無い場合に返されます。
205 Reset Content【コンテンツのリセット】
クライアントからのリクエストを受け取った後、コンテンツをリセットするように指示を出す場合に返されます。
例:フォームの内容をリセット
HTTP 205 Reset Content のレスポンスステータスはクライアントにドキュメントビューをリセットするように指示します。たとえば、フォームの内容をクリアしたり、キャンバスの状態をリセットしたり、UI をリフレッシュすることができます。
206 Partial Content【部分的コンテンツ】
クライアントからコンテンツの部分的処理のリクエスト(Content-Rangeの送信)があった場合に、返されるステータスコードです。
例:PDFファイルを分割して、部分的にダウンロードする場合
207 Multi-Status【複数ステータス】
複数のステータスコードが存在する場合に返されます。
208 Already Reported【既に報告済み】
既に、結果を報告済みであることを表します。
226 IM Used【IM使用】
Delta encoding in HTTPの拡張ステータスコードです。
とのこと。
※あまり良く分からない。
300番台(リダイレクト)
300番台は、リダイレクト処理(転送)に関するステータスコードです。
300 Multiple Choices【複数の選択肢】
リクエストに対してのレスポンスが複数存在していて、ユーザーに対して選択肢を示す場合に返されるステータスコードです。
301 Moved Permanently【恒久的な移転】
リクエストしたURLが、別のページURLに転送されている場合に返されるステータスコードです。
例えば、サイトリニューアルなどにより既存ページのURLが変わってしまうことがよくあります。
その場合、古いURLへアクセスすると、新しいURLへ転送設定されることがおおいです。
↓
その際に301を返すことで、古いURLがリニューアル後の新しいURLに永久に変更になったことを伝えることが出来ます。
302 Found【発見】
リクエストしたページURLが、何らかの理由で、一時的に使用しているURLの場合に返されるステータスコードです。
※いずれは別のURLへ変更される。
例えば、メンテナンス中や準備中ページに飛ばす場合に使用します。
303 See Other【他を参照】
リクエストされたURLとは別のURLを参照して欲しい場合に返されるステータスコードです。
304 Not Modified【未更新】
リクエストした情報が、キャッシュなどが原因で古いリソースのままになっており、最新の情報に更新されていない場合に返されるステータスコードです。
例えば、画像やJavaScriptなど、あまり変更が発生しないコンテンツにキャッシュを持たせている場合に使用します。
305 Use Proxy【プロキシ使用】
プロキシを使用してリクエストを行わなければいけない場合に使用されます。
306 (Unused)
将来の為に予約されているステータスコードで、現時点では使用されていません。
307 Temporary Redirect【一時的なリダイレクト】
リクエストしたURLが、一時的に別のURLへリダイレクトされている場合に使用するステータスコードです。
308 Permanent Redirect【恒久的なリダイレクト】
リクエストしたURLが、完全(永久的)に別のURLへリダイレクトされている場合に使用するステータスコードです。
400番台(処理失敗)
400番台は、クライアントからのリクエストにエラーがあり、正常に処理できなかったことを表しています。
例えば、クライアントがリクエストしたページが存在しない場合などに返されるステータスコードです。
400 Bad Request【不正リクエスト】
クライアントからのリクエストが不正な場合に返されるステータスコードです。
不正なリクエストは、Cookieの情報が古くなっていたり、タイプミス等により発生します。
401 Unauthorized【未認証】
ベーシック認証やダイジェスト認証などで、認証に失敗した場合に返されるステータスコードです。
402 Payment Required【支払要求】
将来の為に予約されているステータスコードです。
支払いを要求する場合に使用することを想定としているみたいですが、現時点では未使用です。
403 Forbidden【禁止】
アクセスを禁止されているコンテンツへアクセスしようとした場合に返されます。
例えば、
・非会員が、会員制サイトへアクセスしようとした
・サーバー側でアクセス制限を掛けられている
という場合です。
404 Not Found【未検出】
リクエストしたコンテンツが見つからない場合に返されるステータスコードです。
使用頻度の高いステータスコードで、以下のような場合に返されます。
・リクエストしたページのURLが間違っていた
・コンテンツを誤って削除してしまった
・リクエストしたURLへのアクセス権がない
因みに、リクエストしたページやコンテンツが意図的に削除されてしまっていた場合には、本来は、あとで説明する「410 Gone」を返すようにします。
405 Method Not Allowed【許可されていないメソッド】
クライアントからのリクエストのメソッドが、サーバー側で許可されていない場合に返されるステータスコードです。
例えば、POSTメソッドを許可していないページに対して、情報をPOST送信した場合などが考えられるようです。
406 Not Acceptable【理できない】
Accept関連のヘッダ(Accept-Language、Accept-Charsetなど)に受理できない内容が含まれている場合に返されるステータスコードです。
例えば、
・UTF-8のテキストを送信したが、Accept-CharsetにUTF-8が定義されていなかった
・英語しか扱えないサーバーに対して、日本語の情報を送信した(Accept-Languageに「ja-JP」しか定義されていなかった)
という場合などです。
407 Proxy Authentication Required【プロキシ認証が必要】
プロキシの認証が必要な場合に返されるステータスコードです。
408 Request Timeout【リクエストタイムアウト】
リクエストが時間内に終了せずタイムアウトした場合に返されます。
409 Conflict【競合・矛盾】
リクエストが、現在のサーバー側の情報と競合、矛盾を起こした場合に返されます。
例えば、サーバー上に存在しているファイルよりも古いファイルをアップロードした時に発生します。
410 Gone【消滅】
リクエストしたコンテンツが永久的に消滅(どこかに移動したり、削除された場合)した場合に返されるステータスコードです。
「404 Not Found」と似ていますね。
404がリクエストしたコンテンツが見つからない場合に返されるのに対して、
410は、永久的にコンテンツが消滅してしまった場合に返されます。
404は一時的な状態と考えられる場合に使用します。
その為、もしコンテンツの移動や削除が一時的なものなのか、永久的なものなのか分からない場合には、404を返すようにします。
411 Length Required【長さ要求】
送信されてきたリクエストにContent-Lengthヘッダが設定されていない為に、サーバーがクライアントからのリクエストを拒否した場合に返されるステータスコードです。
「Content-Lengthヘッダ」とは、コンテンツ(リクエストのボディ)の長さを表すヘッダ情報で、数字(バイト数)で設定します。
例えば、ブラウザから「○○ページが見たい」とWEBサーバー側にリクエストと出すと、WEBサーバーからは、○○ページのデータと一緒に、○○ページのデータのサイズが「Content-Lengthヘッダ」の項目に設定して返されます。
412 Precondition Failed【前提条件の失敗】
リクエスト側のヘッダ情報の前提条件が、サーバーに適合しない場合に返されます。
413 Payload Too Large【ペイロードが大きすぎる】
コンテンツ(リクエストボディ)が、WEBサーバー側で定義されている制限よりも大きい場合に返されます。
ペイロードとは、送信されるデータから付加データ(ヘッダやメタデータなど)を除いたデータ本体を指します。
414 URI Too Long【URIが大きすぎる】
クライアントからリクエストされたURLが長すぎる場合に返されます。
例えば、URLのクエリ文字列(URLの「?」以降の部分)が長すぎる場合に良く発生する現象です。
415 Unsupported Media Type【サポートしていないメディアタイプ】
リクエストされたデータのメディア形式をサポート側がサポートしておらず、受け入れを拒否した場合に返されるステータスコードです。
416 Range Not Satisfiable【範囲が満たない】
リクエストしたデータのサイズが、サーバー側のリソースのサイズを超える場合に返されるステータスコードです。
417 Expectation Failed【予期せぬ失敗】
Expectヘッダに100-continue以外の値が入っている場合に返されるステータスコードです。
418 I'm a teapot【私はティーポッド】
エイプリルフールに発行されたジョークのステータスコードです。
421 Misdirected Request【誤ったリクエスト】
リクエストの送信が誤っている場合のステータスコードです。
422 Unprocessable Entity【処理できないエンティティ】
正しいリクエスト情報だが、サーバーが処理できなかった場合に返されるステータスコードです。
こちらは、WebDAVの拡張ステータスコードです。
※WebDAV(ウェブダブ)とは、クライアント側からWEBサーバー上のファイルやディレクトリを共有、編集できるようにした仕組みのことです。
423 Locked【ロックされている】
リクエストされたリソースがロックされている場合に返されるステータスコードです。
例えば、ファイルを移動させようとしたけど、ロックされていて動かせない場合のステータスコードです。
こちらも、422と同じく、WebDAVの拡張ステータスコードです。
424 Failed Dependency【依存関係により失敗】
前に送信されたリクエストが失敗したことにより、依存関係が保てない場合に返されるステータスコードです。
こちらも、422、423と同じく、WebDAVの拡張ステータスコードです。
425 Too Early
リプレイ攻撃が可能なリクエストに対して、サーバーが処理を拒否する場合に返されるステータスコードです。
426 Upgrade Required【アップグレード要求】
サーバー側が、現在のプロトコルを利用したリクエストを拒否し、別のプロトコルにアップグレードする必要がある場合に返されるステータスコードです。
428 Precondition Required【前提条件が必要】
条件付きのリクエストを送信する必要がある場合に返されるステータスコードです。
429 Too Many Requests【要求過多】
一定の時間内に大量のリクエストが送信された場合に返されるステータスコードです。
431 Request Header Fields Too Large【リクエストヘッダーフィールドが大きすぎる】
リクエストのヘッダーフィールドが大きすぎるためにサーバー側で処理できない場合に返されるステータスコードです。
451 Unavailable For Legal Reasons【法的理由により利用不可】
リクエストしたコンテンツが法的に違法な為、利用できない場合に返されるステータスコードです。
500番台(サーバエラー)
500番台は、400番台とは逆に、サーバー側のエラーにより、リクエストを正常に処理できなかったことを表しています。
例えば、プログラムコードや.htaccessなどの記述にエラーがある場合です。
500 Internal Server Error【インターネットサーバエラー】
サーバー内部でエラーが発生した場合に返されるステータスコードです。
CGIなどのサーバー上で動作させているスクリプトにエラーが発生している場合に返されます。
あと、.htaccessの記述にエラーがある場合にも500エラーが発生します。
もし、500エラーが出ている場合には、例えば、CGIスクリプトのエラーやhtaceessの記述に誤りがないかなどをチェックしてみましょう。
501 Not Implemented【未実装】
リクエストした処理を実行するために必要な機能が、サーバー側に実装されていない場合に返されるステータスコードです。
502 Bad Gateway【不正なゲートウェイ】
ゲートウェイが不正なリクエスト受け取った為に、拒否した場合にステータスコードです。
503 Service Unavailable【サービス利用不可】
アクセス集中やメンテナンス中の為に、サービスを利用できなくなっている場合に返されるステータスコードです。
504 Gateway Timeout【ゲートウェイタイムアウト】
制限時間内にリクエスト処理が終わらなかったために、ゲートウェイがタイムアウトした場合に返されるステータスコードです。
505 HTTP Version Not Supported【サポートしていないHTTPバージョン】
サポートしていないバージョンのHTTPを指定した場合に返されるステータスコードです。
506 Variant Also Negotiates
サーバーの内部設定でエラーが発生した場合に返されるステータスコードです。
507 Insufficient Storage【容量不足】
リクエストを処理するために必要なストレージの容量が、足りなくなった場合に返されるステータスコードです。
508 Loop Detected【ループ検出】
処理実施中に、サーバー内で無限ループが発生した場合に返されるステータスコードです。
509 Bandwidth Limit Exceeded【帯域幅制限超過】
サーバーに設定されている帯域幅(転送量)の上限を超えた場合に返されるステータスコードです。
510 Not Extended【拡張不可】
HTTPヘッダを拡張できない場合に返されるステータスコードです。
511 Network Authentication Required【ネットワークに対する認証要求】
ネットワークへのアクセス時に認証が必要が場合、返されるステータスコードです。
HTTPステータスコードのまとめ
今回は、HTTPステータスコードについてまとめました。
HTTPステータスコードとは、リクエストに対してWEBサーバーから返ってくるレスポンスコードです。
3桁の数字になっており、各コードが何らかのステータスを表しています。
例えば、200というステータスコードが返ってきたら、WEBページが正常に表示されたということを表します。
ただ、ステータスコードには100番から500番台まで用意されており、数がとても多く覚えきれません。
もし、ステータスコードの意味を調べる必要がある場合には、こちらの記事を参考にしてください。