37

有时(当资源被请求太频繁时)我会拦截带有验证码的(HTML)资源的呈现。拦截不会产生任何重定向。它发生在同一个 URI 上。

我现在想知道哪种 HTTP 状态代码最适合这些要求:

  • 它应该符合语义。

  • Google 应该明白,这种拦截是一种临时情况,不应影响其索引中的现有资源。

  • Web 浏览器将显示带有验证码的响应正文。

这些是我迄今为止确定的候选人:

409 冲突

由于与资源的当前状态冲突,无法完成请求。仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许使用此代码。响应正文应该包含足够的信息让用户识别冲突的来源。

这听起来很完美。冲突状态来自那些过于频繁地请求资源的客户端。响应还包括足够的信息来识别冲突的来源并解决它。

503服务不可用

由于服务器临时过载 […],服务器当前无法处理请求。这意味着这是一种暂时的情况[…]。如果已知,延迟的长度可以在 Retry-After 标头中指示。

这听起来适中。我什至可能知道延迟的长度并提供这样的标题。但是我在这里错过了用户可以解决问题的观点。此外,范围太广(重载的服务器与重载的资源)。

4

2 回答 2

14

您可能需要考虑在https://www.rfc-editor.org/rfc/rfc6585#section-4中定义的状态码 429 。

于 2014-10-24T13:14:31.357 回答
2

对我来说422对于这种情况有点准确:

响应状态码表示服务器理解请求实体的内容类型,请求实体的语法正确,但无法处理包含的指令。

于 2019-06-07T09:03:02.273 回答