HTTP 408 和 504 错误有啥区别?

Posted

技术标签:

【中文标题】HTTP 408 和 504 错误有啥区别?【英文标题】:What is the difference between HTTP 408 and 504 errors?HTTP 408 和 504 错误有什么区别? 【发布时间】:2016-07-23 09:50:58 【问题描述】:

这些都是超时错误,但谁在 408 和 504 中超时?

来自w3,408定义为:

在服务器准备等待的时间内,客户端没有产生请求。客户端可以在以后的任何时间重复请求而无需修改。

...而 504 是:

服务器在充当网关或代理时,没有收到来自它需要访问的 URI(例如 HTTP、FTP、LDAP)或其他一些辅助服务器(例如 DNS)指定的上游服务器的及时响应正在尝试完成请求。

如果不是中间服务器,那么 408 中的“客户端”是谁?如果是实际的最终用户,服务器如何知道在他们发出请求之前等待他们的请求?

【问题讨论】:

您正在查看一个非常过时的规范;它已被 RFC 7230...5 取代。 @JulianReschke 我在这里找不到任何提及 408 或 504 的内容:tools.ietf.org/html/rfc7230 你指的是这个吗? 状态码在 RFC 7231 中定义(该规范已分为多个 RFC)。 @JulianReschke 太好了,谢谢。这些新定义看起来确实与我非常相似,如果您对它们与旧定义之间的差异有任何想法,我很想听听。 【参考方案1】:

客户端是浏览器或客户端应用程序。服务器知道等待请求是因为它已经接受了连接,或者已经读取了请求的一部分,比如一两个标头。

【讨论】:

如果服务器收到请求但响应超时,我会收到什么http状态?【参考方案2】:

亚马逊文档告诉:http://docs.aws.amazon.com/en_en/elasticloadbalancing/latest/classic/ts-elb-error-message.html#ts-elb-errorcodes-http408

表示客户端取消请求或发送完整请求失败

Mozilla 文档告诉:https://developer.mozilla.org/en/docs/Web/HTTP/Status/408

HTTP 408 Request Timeout 响应状态码表示服务器想要关闭这个未使用的连接。它是由某些服务器在空闲连接上发送的,即使客户端之前没有任何请求

【讨论】:

以上是关于HTTP 408 和 504 错误有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

http状态码的含义及502, 503和504的区别

HTTP 与 FTP 有啥区别?

标志408 和308 区别

Nginx 抓包让你搞清楚 502 和 504 的区别

FTP和HTTP是啥意思呀?有啥区别

分段错误和堆栈溢出有啥区别?