Webを支える技術　付録Aステータスコード

# 1XX（処理中）
| ステータスコード | ボディ | 関連メソッド | リクエストヘッダ | レスポンスヘッダ | 説明 |
|:-|:-|:-:|:-:|:-:| -  |
|  100 Continue |  なし| すべて  | Expect | -  | Exceptヘッダに100-continueという値を入れてリクエストを送信すると、リクエストヘッダを送りきった時点でサーバが100 Continueを返す。これにより無駄に巨大なリクエストを送信しなくて済むようになる。 |
| 101 Switching Protocols  |   なし| すべて  | -| Upgrade | 利用するプロトコルをHTTP1.1からアップグレードするときに用いる。 |
# 2XX（成功）
| ステータスコード | ボディ | 関連メソッド | リクエストヘッダ | レスポンスヘッダ | 説明 |
|:-|:-|:-:|:-:|:-:| -  |
|  200 OK |  GETの場合はリソースの表現、その他のメソッドの場合は処理結果 | すべて  | -  | -  | リクエストが成功したことを示す。 |
| 201 Created  |  新規作成されたリソースの表現、あるいは処理結果の説明 |  POST、PUT | -  |  Location | リクエストが成功し、新しいリソースを作成したことを示す。リクエストがPOSTだった場合、Locationヘッダには新しいリソースのURIが絶対URIで入る。|
|  202 Accepted | 処理結果が得られるリソースへのリンクや予測処理時間  |  すべて | -  |  Location、Retry-After |クライアントからのリクエストは受け入れられたものの、サーバ側で処理が完了していないことを示す。典型的には、POSTやPUTでリソースを作成・更新したときに、その処理に非常に時間がかかりそうな場合に返す。|
|  203 Non-Authoritative Information|  GETの場合はリソースの表現、その他のメソッドの場合は処理結果 |  すべて | -  | -  | レスポンスヘッダがオリジナルのサーバから提供されたものではないことを示す。それ以外の意味は200 OKと同じ。  |
| 204 No Content  | なし  |  POST、PUT、DELETE |-  |  - | リクエストが成功したものの、クライアントに返すコンテンツがないことを示す |
|  205 Reset Content | なし  | すべて  | -  |  - | ブラウザの画面をリセットして次の入力動作に移れることを表示  |
|  206 Partial Content | してされた範囲のリソース表現  |  GET |  Range、If-Range |  Content-Range | GETの際にRangeヘッダでリソースの範囲をバイドで指定すると、リソースの一部だけを取得できる。部分的GET  |
|  207 Multi-Status | WebDAVが定義するマルチステータスを表現するXML文書 | POST  | -  | -  | WebDAVにおいて、バッチ処理のように処理結果のステータスが複数ある場合に利用する。207という数字は成功を意味するが、それぞれの結果が成功したかどうかはボディのXMLを見ないとわからない  |

# 3XX（リダイレクト）
| ステータスコード | ボディ | 関連メソッド | リクエストヘッダ | レスポンスヘッダ | 説明 |
|:-|:-|:-:|:-:|:-:| - |
|  300 Multiple Choices |  候補のURIのリスト |  すべて | -  |  - | 　指定したURIに対してコンテントネゴシエーションを行った結果、サーバ側では候補を絞り切れなかったときに、クライアントに複数の候補へのリンクを返すために用いる。  |
| 301 Moved Permanently  | 移動先のURIへのリンクを含んだHTMLなど  | すべて  |  - |  Locaton  | 指定したリソースが新しいURIに移動したことを示す。移動先のURIはLocationヘッダで示す。 |
|  302 Found | 移動先のURIへのリンクを含んだHTMLなど  | POST  | -  |  Location |  利用は推奨されていない。 |
|  303 See Other |  移動先のURIへのリンクを含んだHTMLなど |  PSOT |  - | Location  | リクエストに対する処理結果がLocationヘッダで示されるURIからGETで取得できることを示す  |
| 304 Not Modified  |なし |  GET |  If-Modified-Since、If-None-Match |  Etag、Last-Modified |  条件付きGETのときに、リソースが更新されていなかったことを示す。 |
|  305 Use Proxy |  プロキシが必要であることを説明するHTMLなど | すべて |  - | Location  |このリソースにアクセスするためには、指定されたプロキシを通す必要があることを示す  |
| 307 Temporary Redirected  |  移動先のURIへのリンクを含んだHTMLなど |  すべて |  - | Location  | リクエストしたURIが存在しなかったので、クライアントはLocationヘッダが示す別のURIに、メソッドを変えずにリクエストを再送信する必要があることを示す。 |
# 4XX（クライアントエラー）
### 40X
| ステータスコード | ボディ | 関連メソッド | リクエストヘッダ | レスポンスヘッダ | 説明 |
|:-|:-|:-:|:-:|:-:| - |
| 400 Bad Request  |  エラーの理由を説明する文書 | すべて   | -  | -  |  リクエストの構文が間違えていることを示す。また、ほかの4xx系エラーコードに適さないエラーの場合にも利用する。 |
| 401 Unauthorized | エラーの理由を説明する文書   |  すべて  | Authorizaton  |  WWW-Authenticate |  適切な認証情報を持たずにリソースにアクセスしようとしたことを示す。　 |
| 402 Payment Required | お金の払い方を説明する文書  | すべて |  - | -  |  　このリソースを操作するには料金が必要であることを示す。このステータスコードは実際には利用されていない。 |
| 403 Forbidden  |  エラーの理由を説明する文書  | すべて|  - | -  | クライアントが適切な認証情報を提示しなかった以外の理由でリソースを操作できないことを示す |
| 404 Not found | エラーの理由を説明する文書   |  すべて |  - | - |  指定したリソースが見つからなかったことを示す。 |
| 405 Method not Allowed  |  エラーの理由を説明する文書  | すべて  |  Allow  |   | リクエストしたURIが指定したメソッドをサポートしていないことを示す。レスポンスにはAllowヘッダが含まれ、このURIがサポートしているメソッドの一覧が示される。  |
| 406 Not Acceptable  |  候補のURIのリスト |  すべて | Accept、Accept-Charset、Accept-Language、AcceptEncoding、Accept-Range   |  | クライアントがAccept-*ヘッダで指定した表現が返せないことを示す。レスポンスボディには300 Multiple Choicesと同様にサーバが用意できる選択肢の一覧が入る。  |
| 407 Proxy Authentication Required  |  エラーの理由を説明する文書 |  すべて|  Proxy-Authentication | Proxy-Authenticate  | プロキシ認証が必要であることを示す。  |
| 408 Request Timeout | エラーの理由を説明する文書  |  すべて |   | Connection  |  クライアントがリクエストをいつまでたっても送信しきらないため、サーバ側でタイムアウトしたことを示す。 |
| 409 Conflict |  エラーの理由を説明する文書 | PUT、POST、DELETE  |   |  Location |  リクエストが要求したリソースに対する操作が、リソースの現在の状態と矛盾していることを示す。 |

### 41X
| ステータスコード | ボディ | 関連メソッド | リクエストヘッダ | レスポンスヘッダ | 説明 |
|:-|:-|:-:|:-:|:-:| -  |
| 410 Gone  |  エラーの理由を説明する文書 |  すべて  |  - | -  |  このリソースが以前は存在したが、現在は存在しないことを示す |
| 411 Length Required | エラーの理由を説明する文書  |  すべて |  Content-Length  |   |   |
| 412 Precondition Failed| エラーの理由を説明する文書  |  PUT,POST | If-Match、If-None-Match、If-Unmodified-Since  | ETag、Last-Modified |  条件付きリクエストでクライアントが指定した事前条件が、サーバ側で合わないことを示す。楽観的ロックで利用する。 |
| 413 Request Entity Too Large|  エラーの理由を説明する文書 |  すべて  | -  | -  |  サーバが処理できないほどリクエストメッセージが巨大であることを示す。サーバはクライアントからの接続を切断する。 |
| 414 | エラーの理由を説明する文書  |  すべて |  - |  - | サーバが処理できないほどリクエストのURIが長過ぎることを示す  |
| 415 | エラーの理由を説明する文書  | PUT,POST  | Content-Type  |  - |  クライアントが指定したメディアタイプをサーバがサポートしないことを示す |
| 416 | エラーの理由を説明する文書  |  GET | Range  |  - | クライアントがRangeヘッダで指定した範囲が、リソースのサイズと合っていないことを示す |
| 417|  エラーの理由を説明する文書 | すべて   | Expect  | -  |  クライアントが指定したExpectヘッダをサーバが理解できないことを示す。 |

### 42X
| ステータスコード | ボディ | 関連メソッド | リクエストヘッダ | レスポンスヘッダ | 説明 |
|:-|:-|:-:|:-:|:-:| -  |
|  422 |  エラーの理由を説明する文書 | PUT,POST  | -  |  - |  WebDAVにおいて、クライアントが送信したXMLが構文としては正しいけれど意図的に間違っていることを示す。 |
|  423 | エラーの理由を説明する文書  |  PUT,COPY,MOVE,LOCK | -  |  - | WebDAVにおいて、ロックしたリソースを操作しようとしたことを示す。  |
|  424 |  エラーの理由を説明する文書 |  すべて  | -  | -  |  WebDAVにおいて、クライアントが要求したメソッドが依存しているほかのメソッドが失敗したため、もとのリクエストも失敗したことを示す。 |

# 5XX（サーバエラー）
| ステータスコード | ボディ | 関連メソッド | 説明 |
|:-|:-|:-:|:-|
|  500 Internal Server Error | エラーの理由を説明する文書  | すべて   |  サーバ側でエラーが発生したことを示す。また、ほかの5xx系エラーコードに適さないエラーの場合にも利用する。|
| 501 Not Implemented  | エラーの理由を説明する文書  | すべて   |  リクエストされたメソッドを、このURIでサーバが実装していないことを示す。 |
|  502 Bad Gateway |  エラーの理由を説明する文書 | すべて   | プロキシが上流サーバにリクエストを送ったものの、処理が正常に終了しなかったことを示す。 |
| 503 Service Unavailable  |  エラーの理由を説明する文書 |  すべて  | メンテナンスなどでサービスを提供できないことを示す。レスポンスのRetry-Afterヘッダでサービス再開時期を通知することもできる。 |
| 504 Gateway Timeout  |  エラーの理由を説明する文書 |  すべて  | プロキシが上流サーバにリクエストを送ったものの、接続できなかったことを示す。|
|  505 HTTP Version Not Supported |  エラーの理由を説明する文書 | すべて   | クライアントが送信したリクエストのHTTPバージョンを、サーバがサポートしていないことを示す。 |