PIN 码的“达到最大尝试次数”的最佳 HTTP 状态码是啥?
Posted
技术标签:
【中文标题】PIN 码的“达到最大尝试次数”的最佳 HTTP 状态码是啥?【英文标题】:What is the best HTTP status code for pin code's "Max Attempt Reached"?PIN 码的“达到最大尝试次数”的最佳 HTTP 状态码是什么? 【发布时间】:2022-01-06 01:16:55 【问题描述】:我正在我的 Web 应用程序中实现 pin 码授权,其中一项要求是将用户的尝试次数限制为一天内的 n
次。
那么,当用户达到最大尝试次数时,返回给用户的最佳 HTTP 状态代码是什么?
现在我在想
403
429
(但不是发送太多请求)
400
(但请求负载并没有无效)
【问题讨论】:
任何操作(get、post、head、put)都是一个请求,所以当用户输入一个 pin 时,它可能已经发布了 - 所以当你说失败时,你是在想太多或其他事情pin 尝试与发送太多请求无关 - 更重要的是,因为“太多”完全取决于您与上下文一起决定。 【参考方案1】:429 正是你想要的。
来自:https://datatracker.ietf.org/doc/html/rfc6585
429 Too Many Requests
The 429 status code indicates that the user has sent too many
requests in a given amount of time ("rate limiting").
The response representations SHOULD include details explaining the
condition, and MAY include a Retry-After header indicating how long
to wait before making a new request.
For example:
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>I only allow 50 requests per hour to this Web site per
logged in user. Try again soon.</p>
</body>
</html>
Note that this specification does not define how the origin server
identifies the user, nor how it counts requests. For example, an
origin server that is limiting request rates can do so based upon
counts of requests on a per-resource basis, across the entire server,
or even among a set of servers. Likewise, it might identify the user
by its authentication credentials, or a stateful cookie.
Responses with the 429 status code MUST NOT be stored by a cache.
请注意规范如何邀请服务/实现提供详细信息。它并没有说什么类型的请求太多或什么具体的,真的。因此,您会想说“停止向我的服务发送垃圾邮件,因为 x、y、z”。
【讨论】:
规范所说的方式很有趣。我没有注意到这一点。谢谢!顺便说一句,在接受你的之前,我想听听别人的意见。以上是关于PIN 码的“达到最大尝试次数”的最佳 HTTP 状态码是啥?的主要内容,如果未能解决你的问题,请参考以下文章