HTTPステータスコードとは

ステータスコードとは、クライアント側から何かしらのリクエスト(要求)をWEBサーバ側に出した際に、
WEBサーバから返ってくるレスポンスで、3桁の数字で表されます。

・リクエストがあったURLのページですけど、存在しませんよ
・リクエストがあった処理ですが、正常に受け取って、無事処理できましたよ
・サーバ側で何か問題が発生して、リクエストを正常に処理できませんでしたよ
みたいなことを、3桁の数字で返してくれる訳です。

例えば、
ブラウザからどこかのページにアクセスしてみて下さい。
アクセスしたページが問題なく存在していて、ブラウザ上から見ることが出来れば、200というステータスコードが、
逆に、URLを打ち間違えたりして、アクセスしたはずのページを見れなければ、404というステータスコードが返ってきているはずです。

このステータスコードですが、大きく分けて100番台~500番台までが用意されていて、
さらに、各〇〇番台毎に複数のステータスコードが設定されています。

その為、全ステータスコードを合わせると種類がかなり多く、全てを覚えておくのは難しいです。

そこで、こちらの記事では、
■100番台~500番台の意味
と、
■各ステータスコードについて
一覧にして簡単にまとめておきます。

何かの機会にステータスコードを調べる際の参考にして頂ければと思います。

100番台~500番台の意味

100番台~500番台までの説明を簡単にまとめておきます。

100番台案内(Informational)リクエストを受け取って、現在、まだ処理中であることを意味する。
※見かける機会はほとんどない
200番台成功(Success)リクエストを受け取って、正常に受理までされたことを表すコード
300番台リダイレクト(Redirection)リダイレクト処理に関するコード
400番台クライアントエラー(Client Error)クライアン側のエラーに関するコード
500番台サーバエラー(Server Error)サーバ側のエラーに関するコード

ステータスコード一覧

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 Internal Server Error

この画面が出たら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【ネットワークに対する認証要求】

ネットワークへのアクセス時に認証が必要が場合、返されるステータスコード。