HTTP状态代码:区分容量过大和停机维护

问题描述 投票:2回答:3

当服务器“当前由于服务器的临时过载或维护而无法处理请求”时,HTTP状态代码503是described in rfc2616

有些情况下应用程序可能因维护而停机。有些情况下,应用程序可能超出容量。

在我正在开发的服务器应用程序中,我希望能够在HTTP响应中区分这两种情况,以便客户端应用程序可以知道服务不可用的更准确的原因。

然后,客户端应用程序可以向用户显示相关的“过度容量”或“向下维护”通知给用户。

我可以选择使用未定义的5XX状态代码(例如520),但是如果有的话,我更愿意采用定义的标准方法。

是否有定义的标准方法来区分由于容量问题导致的不可用和因维护而无法使用的HTTP响应?

http http-status-codes http-status-code-503
3个回答
1
投票

如果您不想定义自己的状态代码,可以使用503并设置不同的自定义错误消息,具体取决于它是“超出容量”还是“关闭以进行维护”。

您还可以设置Retry-After响应标头字段,例如,如果您知道维护何时完成并且服务器已备份。

状态代码的详细信息: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Retry-After标头字段的详细信息: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html


1
投票

除非您愿意进行注册,否则请勿使用未定义的状态代码。

此外,您可以使用整个有效负载来添加其他信息。

最后,http://greenbytes.de/tech/webdav/rfc6585.html#status-429可能会引起关注。


0
投票

我认为410状态代码“Gone”可以是正确的答案,它表明资源已经存在,但不再... https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

10.4.11 410已经过去了

请求的资源在服务器上不再可用,并且不知道转发地址。预计这种情况将被视为永久性的。具有链接编辑功能的客户端应该在用户批准后删除对Request-URI的引用。如果服务器不知道或无法确定条件是否是永久性的,则应该使用状态代码404(未找到)。除非另有说明,否则该响应是可缓存的。

410响应主要用于通过通知接收方资源是故意不可用的以及服务器所有者希望移除到该资源的远程链接来辅助web维护的任务。这种事件对于限时,促销服务以及属于不再在服务器站点工作的个人的资源是常见的。没有必要将所有永久不可用的资源标记为“已消失”或将标记保留任何时间长度 - 这由服务器所有者自行决定。

© www.soinside.com 2019 - 2024. All rights reserved.