如果服务器超时以处理请求,要发送的正确的HTTP响应代码是什么?

时间:2019-11-15 11:20:52

标签: java http http-status-codes

我有一个运行时间很长的servlet,如果发生超时,我想中止该进程。 (运行良好的servlet是另一个讨论)。

现在,当我在服务器中止请求时,应该发送HTTP 408或HTTP 503或其他适当的状态。

408看起来更像是客户端错误,而503看起来更像是过载/维护状态。并且找不到合适的响应状态。

2 个答案:

答案 0 :(得分:4)

由于这是服务器错误,因此应以5XX开头。 根据Wikipedia的说法,我认为504更适合您,

  

504网关超时
  该服务器充当网关或代理,没有收到上游服务器的及时响应。

[1] https://www.checkupdown.com/status/E504.html

答案 1 :(得分:0)

408表示请求超时。来自维基百科:

  

服务器超时,等待请求。根据HTTP   规范:“客户未在时间内提出要求   服务器已经准备好等待。客户可以重复   请求,以后不做任何修改。”

因此,我认为这不适合您的情况。因为超时的原因是服务器本身。 (一些长时间运行的过程等)

503表示服务不可用。正如您所说,这是关于过载/停机问题,也不适合您的情况。

因此,您可以使用HTTP 500作为常规错误响应进行响应。

  

500 Internal Server Error:通用错误消息,当   遇到意外情况,没有其他具体消息   适合。