429 Too Many Requests

HTTP の 429 Too Many Requests クライアントエラーレスポンスステータスコードは、クライアントが指定時間内にたくさんリクエストを送信しすぎたことを示します。 リクエストの速度を落とすようにクライアントに依頼するこの仕組みは、一般に「速度制限」と呼ばれています。

新しいリクエストを行う前にどのくらい待つかを示す Retry-After ヘッダーをこのレスポンスに含めることができます。

速度制限の実装は様々で、制限はサーバー全体かもしれませんし、リソース毎かもしれません。 通常、速度制限の制限はクライアントの IP に基づいて行われますが、 リクエストが認証されていたり クッキー が含まれていたりしていれば、 ユーザーや許可されたアプリケーションに固有の制限をかける可能性もあります。

ステータス

http
429 Too Many Requests

Retry-After ヘッダーを含んだレスポンス

以下のリクエストが、設定ミスのあるクライアントによって繰り返しループして送信されているとします。

http
GET /reports/mdn HTTP/1.1
Host: example.com

この例では、クライアントが 1 分あたりのリクエスト数が設定したしきい値を超えたときに、サーバ全体の速度制限が有効になります。 リクエストは 60 分後にこのクライアントに再び許可されることを示す Retry-After ヘッダーとともに 429 レスポンスを返します。

http
HTTP/1.1 429 Too Many Requests
Content-Type: text/html
Retry-After: 3600

<html>
  <head>
    <title>Too Many Requests</title>
  </head>
  <body>
    <h1>Too Many Requests</h1>
    <p>You're doing that too often! Try again later.</p>
  </body>
</html>

仕様書

Specification
RFC 6585
# section-4

関連情報