2

HTTP 状态代码 503在 rfc2616中被描述为与服务器“由于服务器临时过载或维护而当前无法处理请求”相关。

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

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

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

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

是否有定义的标准方法来区分由于容量问题不可用和由于维护不可用之间的 HTTP 响应?

4

3 回答 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

于 2013-03-15T09:50:08.490 回答
1

不要使用未定义的状态码,除非你愿意去注册它。

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

最后,http ://greenbytes.de/tech/webdav/rfc6585.html#status-429可能很有趣。

于 2013-03-15T10:43:18.887 回答
-1

我认为 410 状态码“Gone”可以是正确答案,它表明该资源之前存在,但目前它不可用,并且不会再可用 https://www.w3.org/Protocols/rfc2616/rfc2616-sec10 .html

10.4.11 410 走了

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

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

于 2018-01-03T10:57:02.283 回答