当用户超过每日传输限制时,正确的 HTTP 状态代码是什么?

问题描述 投票:0回答:1

每个用户都有每日信用额度。

如果用户超过了他们的每日限制,什么 HTTP 状态代码就在这里。

403 - 禁止或 200 - 成功(有验证结果)

c# rest http-status-code-403 http-status-codes http-status-code-429
1个回答
3
投票

你在描述速率限制。有一个明确的状态代码:429.

这本身就足够了,但聪明的客户也会寻找 Rety-After 标头,一个设计良好的 API(最好是 API 客户端)应该实现它以减少服务器上的负载。

大概,如果您知道速率限制是如何被“违反”的,您可以计算出一个相当精确的

Retry-After
值。您可以查看 Mozilla 文档中的 Retry-After 格式,它可以以秒或特定日期/时间为单位。我以前做过这个并添加了一个“fudge factor”以避免过早不必要的新请求。

虽然这种方法的速率限制可能会被不良行为者滥用,但它至少有助于在您的服务器和客户端的名义速率限制场景中减少网络(和其他)资源利用率。

© www.soinside.com 2019 - 2024. All rights reserved.