在HTTP 502中,无效响应是什么意思?

时间:2016-02-26 19:50:29

标签: http httpresponse rfc standards-compliance

我正在尝试测试服务器以查看它是否符合下面的定义,为此,我需要构建并从上游服务器向网关服务器发送无效响应。 HTTP规范说明了关于状态代码502 - Bad Gateway的以下内容。

  

502(Bad Gateway)状态代码表示服务器,而      充当网关或代理,收到来自的无效响应      尝试完成请求时访问的入站服务器。

但究竟什么构成无效回应?非标准响应代码(例如6789之类的随机数)是否算作无效响应?或者HTTP版本无效的响应?

遇到此this,其中说不完整的标头和响应正文可能导致502错误。服务器如何确定标头或正文是否不完整?更重要的是,是否有可能以编程方式创建这样的响应(我正在使用Java)?

1 个答案:

答案 0 :(得分:5)

我设法在HTTP规范中找到了以下内容(RFC7230第3.3.3节)。

  

如果收到的邮件没有Transfer-Encoding且带有          多个Content-Length头字段有不同          字段值或单个Content-Length头字段具有          无效的值,然后消息框架无效和          收件人必须将其视为不可恢复的错误。如果这是一个          请求消息,服务器必须响应400(错误请求)          状态代码然后关闭连接。如果这是一个回应          代理收到的消息,代理必须关闭连接          到服务器,丢弃收到的响应,并向客户端发送502(Bad Gateway)响应。如果这是响应消息          用户代理收到的用户代理必须关闭          连接到服务器并丢弃收到的响应。

除此之外,我还注意到当上游服务器关闭时,Nginx在充当反向代理/负载均衡器时会返回502。