有时候(经常请求资源)我会用验证码拦截(HTML)资源的呈现。拦截不会产生任何重定向。它发生在同一个URI上。
我现在想知道哪种HTTP状态代码最适合这些要求:
它应符合语义。
Google应该明白此拦截是一个临时条件,不应影响其索引中的现有资源。
网络浏览器将显示带验证码的响应正文。
这是我到目前为止所确定的候选人:
由于与资源的当前状态发生冲突,无法完成请求。此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许。响应主体应该包含足够的信息,以便用户识别冲突的来源。
这听起来很完美。冲突状态来自那些经常请求资源的客户端。响应还包括足够的信息来识别冲突的根源并加以解决。
由于服务器临时过载,服务器当前无法处理请求。这意味着这是一个暂时的条件[...]。如果已知,延迟的长度可以在Retry-After标头中指示。
这听起来适度。我甚至可能知道延迟的长度并提供这样的标题。但我在这里错过了用户可以解决问题的重点。此外,范围太广(服务器重载与资源过载)。
答案 0 :(得分:8)
您可能需要考虑http://tools.ietf.org/html/rfc6585#section-4中定义的状态代码429。
答案 1 :(得分:-2)
对我来说 422 在这种情况下较为准确:
响应状态代码表示服务器了解内容 请求实体的类型,并且请求实体的语法为 正确,但是无法处理其中包含的说明。