Skip to content

Rate Limiting Headers

Cristi Pufu edited this page Nov 13, 2022 · 2 revisions

Rate Limiting Headers

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

Clone this wiki locally