远程服务器发生故障时使用哪个HTTP状态代码?500还是502?
我有一个API,根据客户的POST请求:远程服务器发生故障时使用哪个HTTP状态代码?500还是502?,http,http-status-codes,Http,Http Status Codes,我有一个API,根据客户的POST请求: 解析客户端的请求 处理请求中的数据 向远程服务器发送请求 从远程服务器接收响应 对响应中的数据执行更多操作 将数据持久化到数据库中 向客户端发送响应 换言之,普通的web服务器的东西 如果远程服务器向我发送500(或任何其他错误),我应该向我的客户端发送500内部服务器错误还是502坏网关 从RFC 7231 6.6.3. 502 Bad Gateway The 502 (Bad Gateway) status code indicates t
500
(或任何其他错误),我应该向我的客户端发送500内部服务器错误
还是502坏网关
从RFC 7231
6.6.3. 502 Bad Gateway
The 502 (Bad Gateway) status code indicates that the server, while
acting as a gateway or proxy, received an invalid response from an
inbound server it accessed while attempting to fulfill the request.
一方面,502坏网关
看起来是为“哑”服务器设计的,这些服务器只将请求转发给远程服务器,并将其响应返回给客户端,而无需进行太多处理
另一方面,无法访问远程服务器听起来不像是500内部服务器错误
。。。更像是“远程服务器错误”
我应该用哪一个<代码>500,502
或其他?我会选择500
这其实并不重要——它们都是5xx系列错误的一部分,意思是“我们搞砸了,而不是你”——因此,在返回的错误代码中,究竟出了什么问题并不是真正需要传达的。500是通用的,被很好地理解,其含义也很清楚,所以我只会使用它,而不会使事情过于复杂
解决你的具体问题
一方面,502坏网关看起来是为“哑”服务器设计的,这些服务器只将请求转发给远程服务器,并将其响应返回给客户端,而无需进行太多处理
这当然是惯例,但我认为你的分析是合理正确的
另一方面,无法访问远程服务器听起来不像是500内部服务器错误。。。更像是“远程服务器错误”
我认为这仍然是一个内部服务器错误,只是一个由其他地方的远程服务器引起的内部服务器错误(这是一个您的用户可以说不需要知道的细节。)您是否希望客户端在500和502错误之间的实际行为有所不同?毕竟,两者基本上都意味着服务器直接或间接出现了问题。例如,我认为应用程序客户端不需要这样的粒度。@TimBiegeleisen,我想客户端在所有5xx错误上的行为都是一样的。我将使用下面的答案。我想500种已经包括502种了。如果你偏执/一丝不苟,你仍然可以在自己的服务器上记录502。然后,任何客户端500都可以很容易地追溯到由实际的502引起的。