- Notifications
You must be signed in to change notification settings - Fork 30
Rate Limiting Headers
Cristi Pufu edited this page Nov 13, 2022 · 2 revisions
This sample shows how to set the default rate limiting headers:
| HTTP Header | Description |
|---|---|
| x-ratelimit-limit | Request limit per timespan: 100/30m |
| x-ratelimit-remaining | The number of requests left for the time window |
| x-ratelimit-reset | The remaining window before the rate limit resets in seconds |
public static Func<HttpContext, RateLimitLease, CancellationToken, ValueTask> OnRejected { get; } = (httpContext, lease, token) => { httpContext.Response.StatusCode = 429; if (lease.TryGetMetadata(RateLimitMetadataName.Limit, out var limit)) { httpContext.Response.Headers[RateLimitHeaders.Limit] = limit; } if (lease.TryGetMetadata(RateLimitMetadataName.Remaining, out var remaining)) { httpContext.Response.Headers[RateLimitHeaders.Remaining] = remaining.ToString(); } if (lease.TryGetMetadata(RateLimitMetadataName.Reset, out var reset)) { httpContext.Response.Headers[RateLimitHeaders.Reset] = reset.ToString(); } if (lease.TryGetMetadata(RateLimitMetadataName.RetryAfter, out var retryAfter)) { httpContext.Response.Headers[RateLimitHeaders.RetryAfter] = retryAfter.ToString(); } return ValueTask.CompletedTask; };You can find the sample here RateLimitMetadata.cs