🤖
HTTPステータスコード一覧
状況
- RSpecテストコードを書いている際、「エラー画面に行かずにページを再読み込みする」ことを検証するにはどうすればいいか悩む場面があった。
- 調べてみると、「無効なパラメータを送信した際に、ステータスコード200が返されることを確認する」ことで対応できそうだとわかった。
- 404や500は知っていたが200については知らず、それ以外にもたくさん種類がありそうだったので今回まとめてみることにしました。
HTTPステータスコード一覧
HTTP 100番台 Informational(情報レスポンス)
| HTTPステータスコード | 説明 | 推奨状態 |
|---|---|---|
| 100 Continue | リクエスト継続可能 | 推奨 |
| 101 Switching Protocol | プロトコルの切り替え | 推奨 |
| 102 Processing | 処理中 | 非推奨 |
| 103 Early Hints | 早期に予測されるヘッダを伝達 | 推奨 |
HTTP 200番台 Success(成功レスポンス)
| HTTPステータスコード | 説明 | 推奨状態 |
|---|---|---|
| 200 OK | リクエストが正常に処理できた | 推奨 |
| 201 Created | リクエストが成功してリソースの作成が完了 | 推奨 |
| 202 Accepted | リクエストを受け取ったが処理はされていない | 推奨 |
| 203 Non-Authoritative Information |
リクエストが成功したものの変換プロキシによって 元のサーバーの200(OK)レスポンスからペイロードが変更された |
推奨 |
| 204 No Content | リクエストは成功したものの、クライアントが現在のページから移動する必要がない | 推奨 |
| 205 Reset Content | クライアントにドキュメントビューをリセットするように指示 | 推奨 |
| 206 Partial Content | 要求された範囲のデータやリソースの一部分だけのリクエストが成功 | 推奨 |
| 207 Multi-Status | レスポンスが混ざっている可能性がある | 非推奨 |
| 208 Already Reported | バインディングへのレスポンス | 非推奨 |
| 226 IM Used | デルタエンコーディングの文脈において 受信した'GET'リクエストに対する"デルタ"を返していることを示す |
非推奨 |
HTTP 300番台 Redirection(リダイレクション)
| HTTPステータスコード | 説明 | 状態 |
|---|---|---|
| 300 Multiple Choice | リクエストに対して複数のレスポンスがあることを示す | 推奨 |
| 301 Moved Permanently | URLへ完全に(恒久的に)移動する | 推奨 |
| 302 Found | 一時的に移動する ※ Google検索エンジンの検索リストでは旧URLを示すため将来的に元のURLに戻すなどの時に利用 |
推奨 |
| 303 See Other | リダイレクトが新しくアップロードされたリソースではなく (確認ページやアップロード進捗ページのような)別なページにリンクする |
推奨 |
| 304 Not Modified | 更新されていない ※ 正常に処理されているがブラウザキャッシュの内容を表示している為、サーバからダウンロードをしていない |
推奨 |
| 307 Temporary Redirect | 一時的に'Location'ヘッダーで示されたURLへ移動 ※ 302と異なり、リダイレクトされたリクエスト時にメソッドと本文は変更されない |
推奨 |
| 308 Permanent Redirect | 'Location'ヘッダーで示されたURLへ完全に移動 ※ 301と異なり、リダイレクトされたリクエスト時にメソッドと本文は変更されない |
推奨 |
HTTP 400番台 Client Error(クライアントエラー)
| 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 | リクエストの Expect ヘッダーに期待された値が設定されていなかった | 推奨 |
| 418 I'm a teapot | サーバー自身がティーポットであることを理由としてコーヒーを入れることを拒否すること (=処理したくないリクエストに使われる) |
非推奨 |
| 421 Misdirected Request | リクエストがレスポンスを生成できないサーバーに送られたこと | 推奨 |
| 422 Unprocessable Entity | WebDAVの拡張ステータスコードリクエストは適正だが意味が異なるためサーバーが返すことが出来ない | 非推奨 |
| 423 Locked | WebDAVの拡張ステータスコードリクエスト内容がロックされているためサーバーが返すことが出来ない | 非推奨 |
| 424 Failed Dependency | 要求されたアクションが他のアクションに依存しており、そのアクションが失敗したため、対象のリソースに対してメソッドを実行できなかった | 推奨 |
| 425 Too Early | サーバーが繰り返し処理が発生される可能性のあるリクエストと判断したため処理が出来ないと判断 無限ループでサーバーに高負荷がかかるリスクの可能性がある為 |
非推奨 |
| 426 Upgrade Required | 拡張ステータスコードHTTP/1.1にアップグレードが必要な為、サーバーが処理できない | 推奨 |
| 428 Precondition Required | サーバーがリクエストを条件付きにする必要がある | 推奨 |
| 429 Too Many Requests | 一定時間内にリクエスト数が多すぎるためアクセスを拒否した DDos攻撃によるサーバーダウンのリスクを回避する為 |
推奨 |
| 431 Request Header Fields Too Large | リクエストヘッダーが長すぎるためサーバー処理が拒否した | 推奨 |
| 451 Unavailable For Legal Reasons | ユーザーの要求したリソースが法的理由で使用できない | 非推奨 |
HTTP 500番台 Server Error(サーバーエラー)
| 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 | ネットワーク認証が必要 | 非推奨 |
引用:
所見
- まとめるのがしんどかったです。笑 それほど多くの状態があることがわかりました。
- 実際に404エラー等を発生させるにはどうすればいいのか(ページの設定、エラーハンドリング?など)についてはまだ理解できていないので、そちらはまた勉強してまいりたい。
Discussion