HTTP レスポンスステータスコード
==================

 HTTP のレスポンスステータスコードは、特定の HTTP リクエストが正常に完了したどうかを示します。
 レスポンスは 5 つのクラスに分類されています。

1. 情報レスポンス (`100`–`199`)
2. 成功レスポンス (`200`–`299`)
3. リダイレクトメッセージ (`300`–`399`)
4. クライアントエラーレスポンス (`400`–`499`)
5. サーバーエラーレスポンス (`500`–`599`)

以下のステータスコードは RFC 2616 の第 10 章で定義されています。更新版の仕様書は RFC 7231 にあります。

**メモ:** この一覧にないレスポンスを受け取った場合、それは標準外のレスポンスであり、おそらくそのサーバーソフトウェアに固有のものです。

情報レスポンス
-------

`100 Continue`

これは暫定レスポンスで、その時点までのすべてに問題がなく、クライアントはリクエストを継続してよい、またもしリクエストが完了している場合はレスポンスを無視してよいことを示します。

`101 Switching Protocols`

このコードはクライアントからの `Upgrade` リクエストヘッダーのレスポンスとして送信され、サーバーはプロトコルを切り替えていることを示します。

`102 Processing` (WebDAV)

このコードは、サーバーはリクエストを受け取って処理しているが、まだレスポンスを提供できないことを示します。

`103 Early Hints`

このステータスコードは主に `Link` ヘッダーとともに使用され、サーバーがリソースを準備している間、ユーザーエージェントがリソースの先読みを開始できるようにするためのものです。

成功レスポンス
-------

`200 OK`

リクエストが成功したことを示します。成功が意味することは、 HTTP メソッドにより異なります。

* `GET`: リソースが読み込まれ、メッセージ本文で転送された。
* `HEAD`: メッセージ本文がなく、表現ヘッダーがレスポンスに含まれている。
* `PUT` または `POST`: 操作の結果を表すリソースがメッセージ本文で送信される。
* `TRACE`: メッセージ本文に、サーバーが受け取ったリクエストメッセージが含まれている。

`201 Created`

リクエストは成功し、その結果新たなリソースが作成されたことを示します。これは一般的に、 `POST` リクエストや、一部の `PUT` リクエストを送信した後のレスポンスになります。

`202 Accepted`

 リクエストは受理されたが、まだ実行されていないことを示します。
 これはあいまいです。 HTTP ではリクエストを処理した結果を示す非同期なレスポンスを後から送信する方法がないためです。
 リクエストは別のプロセスかサーバーが処理する、またはバッチ処理する予定です。


`203 Non-Authoritative Information`

 このレスポンスコードは、返されるメタ情報のセットが生成元のサーバーから得られるセットと同一ではなく、ローカルまたは第三者の持つ複製から収集したことを表します。
 これは主に、他のリソースのミラーやバックアップを使用したときに使用されます。
 このような場合以外は、このステータスより `200 OK` のほうが好ましいレスポンスです。


`204 No Content`

リクエストに対して送信するコンテンツはありませんが、ヘッダーは有用であることを示します。ユーザーエージェントはこのリソースに関するキャッシュ済みのヘッダーを、新たな内容に更新します。

`205 Reset Content`

ユーザーエージェントに対し、リクエストを送信した文書をリセットするよう伝達します。

`206 Partial Content`

このレスポンスコードは、クライアントが `Range` ヘッダーを送信し、リソースの一部だけをリクエストした時に使用されます。

`207 Multi-Status` (WebDAV)

複数のステータスコードがあてはまる状況で、複数のリソースに関する情報を伝えます。

`208 Already Reported` (WebDAV)

同じコレクションに繰り返し複数のバインディングする内部メンバーを列挙することを避けるため、 `<dav:propstat>` レスポンス要素の内部で使用します。

`226 IM Used` (HTTP Delta encoding)

サーバーはリソースへの `GET` リクエストの処理を完了しており、レスポンスは現在のインスタンスに適用された 1 つ以上の instance manipulation の結果を表します。

リダイレクトメッセージ
-----------

`300 Multiple Choice`

リクエストに対して複数のレスポンスがあることを示します。ユーザーエージェントやユーザーは、それらからひとつを選択します。 (複数のレスポンスからひとつを選ぶ方法は標準化されていませんが、選択肢へリンクする HTML が推奨されており、それによってユーザーが選択することができます。)

`301 Moved Permanently`

リクエストされたリソースの URL が永遠に変更されたことを示します。レスポンスで新しい URL が与えられます。

`302 Found`

 このレスポンスコードは、リクエストされたリソースの URI が *一時的に* 変更されたことを示します。
 URI は将来、さらに変更される可能性があります。従って、クライアントは将来のリクエストでも同じ URI を使用するべきです。


`303 See Other`

サーバーはこのレスポンスを、リクエストされたリソースを別の URI で GET リクエストを使用して取得するようクライアントを誘導するために送信します。

`304 Not Modified`

 これはキャッシュ用に使用します。
 このレスポンスコードはクライアントに対して、レスポンスは変更されていないことを示します。よって、クライアントはキャッシュ済みのレスポンスを使い続けます。


`305 Use Proxy` 
非推奨

 これは旧バージョンの HTTP 仕様書で、リクエストされたレスポンスはプロキシーからアクセスしなければならないことを示していました。
 プロキシーのインバンド設定に関するセキュリティの懸念により、このレスポンスコードは非推奨になりました。


`306 unused`

このレスポンスコードはもう使用されず、予約済みです。 HTTP/1.1 仕様書の旧バージョンでは使用されていました。

`307 Temporary Redirect`

 サーバーはこのレスポンスを、リクエストされたリソースを別の URI で、元のリクエストと同じメソッドを使用して取得するようクライアントを誘導するために送信します。
 これは `302 Found` HTTP レスポンスコードと同じ意味を持ちますが、ユーザーエージェントは使用する HTTP メソッドを*変更してはならない*点が異なります。始めのリクエストで `POST` を用いた場合は、次のリクエストでも `POST` を使用しなければなりません。


`308 Permanent Redirect`

 これは、リソースが HTTP の `Location:` レスポンスヘッダーで指定した別の URI へ永続的に置かれていることを示します。
 これは `301 Moved Permanently` HTTP レスポンスコードと同じ意味を持ちますが、ユーザーエージェントは使用する HTTP メソッドを*変更してはならない*点が異なります。始めのリクエストで `POST` を用いた場合は、次のリクエストでも `POST` を使用しなければなりません。


クライアントエラーレスポンス
--------------

`400 Bad Request`

構文が無効であるためサーバーがリクエストを理解できないことを示します。

`401 Unauthorized`

 HTTP 標準では "unauthorized" (不許可) と定義されていますが、意味的にはこのレスポンスは "unauthenticated" (未認証) です。
 つまり、クライアントはリクエストされたレスポンスを得るためには認証を受けなければなりません。


`402 Payment Required` 
Experimental

このレスポンスコードは、将来のために予約されています。このコードは当初、デジタル決済システムで使用するために作成されましたが、ごく稀にしか使用されておらず、標準的な慣例はありません。

`403 Forbidden`

 認証されていないなどの理由でクライアントにコンテンツのアクセス権がなく、サーバーが適切なレスポンスの返信を拒否していることを示します。
 `401 Unauthorized` とは異なり、クライアントの ID がサーバーに知られています。


`404 Not Found`

 サーバーがリクエストされたリソースを発見できないことを示します。
 ブラウザーでは、これは URL が解釈できなかったことを意味します。
 API では、これは通信先が有効であるものの、リソース自体が存在しないことを意味することがあります。
 サーバーは認証されていないクライアントからリソースの存在を隠すために、 403 の代わりにこのレスポンスを返すことがあります。
 このレスポンスコードはウェブで頻繁に見られるため、おそらくもっとも有名なコードでしょう。


`405 Method Not Allowed`

サーバーがリクエストメソッドを理解しているものの、無効にされており使用することができません。例えば、 API がリソースを DELETE することを禁止できます。 `GET` および `HEAD` の 2 つは必須で、無効にすることができず、このエラーコードを返してはいけません。

`406 Not Acceptable`

このレスポンスは、ウェブサーバーが サーバー駆動型コンテンツネゴシエーション (en-US) を行った結果、ユーザーエージェントから与えられた条件に合うコンテンツが見つからない場合に送信されます。

`407 Proxy Authentication Required`

これは `401 Unauthorized` と似ていますが、プロキシーサーバーが認証を要求している点が異なります。

`408 Request Timeout`

 このレスポンスはクライアントが以前にリクエストを行っていない、アイドル状態の接続において一部のサーバーが送信します。
 サーバーが使用していない接続の終了を望んでいることを示します。
 このレスポンスは Chrome、 Firefox 27 以降、IE9 など、閲覧を高速化するための HTTP 事前接続機能を使用する一部のブラウザーでよく使用します。
 また、一部のサーバーはこのメッセージを送らずに接続を閉じることに注意してください。


`409 Conflict`

このレスポンスは、リクエストがサーバーの現在の状態と矛盾する場合に送られるでしょう。

`410 Gone`

 このレスポンスは、リクエストされたコンテンツがサーバーから永久に削除され、転送先アドレスがない場合に送られます。
 クライアントはこのリソースへのキャッシュやリンクを削除することが期待されます。
 HTTP 仕様書ではこのコードを「期間限定のプロモーションサービス」に使用することを意図しています。
 API はこのステータスコードの場合、削除されたリソースを無理に示そうとするべきではありません。


`411 Length Required`

サーバーが `Content-Length` ヘッダーフィールドを要求しているが、リクエストで定義されていないために、サーバーがリクエストを拒否したことを示します。

`412 Precondition Failed`

サーバー側で適合しない前提条件が、クライアント側のヘッダーに含まれていることを示します。

`413 Payload Too Large`

 リクエストの本体がサーバーで定めている上限を超えていることを示します。
 サーバーは接続を閉じるか、`Retry-After` ヘッダーフィールドを返します。


`414 URI Too Long`

クライアントがリクエストした URI が、サーバーで扱える長さを超えていることを示します。

`415 Unsupported Media Type`

リクエストされたデータのメディア形式をサーバーが対応しておらず、サーバーはリクエストを拒否したことを示します。

`416 Range Not Satisfiable`

 リクエスト内の `Range` ヘッダーフィールドで指定された範囲を満たすことができないことを示します。
 指定した範囲が、目的の URI のデータサイズを超えている可能性があります。


`417 Expectation Failed`

このレスポンスコードは、`Expect` リクエストヘッダーで指定された内容がサーバー側と適合しないことを示します。

`418 I'm a teapot`

サーバーは、ティーポットでコーヒーを淹れようとする試みを拒否します。

`421 Misdirected Request`

 リクエストは、レスポンスを生成できないサーバーに送られました。
 リクエストの URI に含まれているスキームや権限の組み合わせに対してレスポンスを生成するよう設定されていないサーバーが、このコードを送ることがあります。


`422 Unprocessable Entity` (WebDAV)

リクエストは適正ですが、意味が誤っているために従うことができません。

`423 Locked` (WebDAV)

アクセス中のリソースはロックされています。

`424 Failed Dependency` (WebDAV)

前のリクエストが失敗したため、このリクエストも失敗しました。

`425 Too Early` 
Experimental

サーバーが、繰り返される可能性のあるリクエストを処理するリスクを望まないことを示します。

`426 Upgrade Required`

 サーバーは現在のプロトコルを使用したリクエストの実行を拒否しましたが、クライアントが別のプロトコルにアップグレードした後は受け入れることができます。
 サーバーは必要なプロトコルを示すために、426 のレスポンスで `Upgrade` ヘッダーフィールドを送信しなければなりません。


`428 Precondition Required`

 オリジンサーバーはリクエストが条件付きになることを必要としています。
 このレスポンスは「ロストアップデート問題」 (クライアントがリソースの状態を取得して変更およびサーバーに送信している間に、第三者がサーバーの状態を変更して競合が発生すること) を防ごうとするものです。


`429 Too Many Requests`

ユーザーは一定の時間内に大量のリクエストを送信しました ("レート制限")。

`431 Request Header Fields Too Large`

 ヘッダーフィールドが大きすぎるため、サーバーはリクエストの処理を望みません。
 ヘッダーフィールドのサイズを削減した後に、リクエストを再送信できます。


`451 Unavailable For Legal Reasons`

ユーザーエージェントが政府によって検閲されたウェブページなど、違法なリソースをリクエストしています。

サーバーエラーレスポンス
------------

`500 Internal Server Error`

サーバー側で処理方法がわからない事態が発生したことを示します。

`501 Not Implemented`

リクエストメソッドをサーバーが対応しておらず、扱えないことを示します。サーバーが対応しなければならない (従って、このコードを返してはならない) メソッドは `GET` と `HEAD` だけです。

`502 Bad Gateway`

このエラーレスポンスは、リクエストの処理に必要なレスポンスを受け取るゲートウェイとして動作するサーバーが無効なレスポンスを受け取ったことを示します。

`503 Service Unavailable`

 サーバーはリクエストを処理する準備ができていないことを示します。
 一般的な原因は、サーバーがメンテナンスや過負荷でダウンしていることです。
 このレスポンスとともに問題について説明する、ユーザーにわかりやすいページを送信するべきであることに注意してください。
 このレスポンスは一時的な状況について使用するものであり、また可能であれば、サービスが復旧する前に HTTP の `Retry-After` ヘッダーに予定時刻を含めてください。
 また、これら一時的な状況のレスポンスは通常キャッシュされるべきではないことから、ウェブ管理者はこのレスポンスとともに送られるキャッシュ関連のヘッダーに注意しなければなりません。


`504 Gateway Timeout`

このエラーレスポンスは、ゲートウェイとして動作するサーバーが時間内にレスポンスを得られない場合に送られます。

`505 HTTP Version Not Supported`

リクエストで使用した HTTP のバージョンにサーバーが対応していないことを示します。

`506 Variant Also Negotiates`

サーバーに内部構成エラーがあることを示します。選択したバリアントリソースが透過的コンテンツネゴシエーション自体に携わるよう設定されており、ネゴシエーションプロセスが正しく終了しなかったことを示します。

`507 Insufficient Storage` (WebDAV)

サーバーがリクエストを完了させるのに必要な表現を保存することができなかったため、メソッドがリソースに対して実行できなかったことを示します。

`508 Loop Detected` (WebDAV)

サーバーは、リクエストの処理中に無限ループを検出しました。

`510 Not Extended`

サーバーがリクエストを処理するために、リクエストをさらに拡張することが必要です。

`511 Network Authentication Required`

クライアントがネットワークでアクセスするために認証が必要であることを示します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* Wikipedia の、HTTP ステータスコードの一覧
* HTTP ステータスコードの、IANA 公式レジストリー