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

Pub*_*udu 4 http standards-compliance httpresponse rfc

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

502(错误网关)状态代码表示服务器在充当网关或代理时,在尝试完成请求时从其访问的入站服务器收到无效响应.

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

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

Pub*_*udu 5

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

如果在没有Transfer-Encoding的情况下收到消息并且具有不同字段值的多个Content-Length头字段或具有无效值的单个Content-Length头字段,则消息成帧无效且接收者必须将其视为不可恢复的错误.如果这是请求消息,则服务器必须以400(错误请求)状态代码响应,然后关闭连接.如果这是代理收到的响应消息,则代理必须关闭与服务器的连接,丢弃收到的响应,并向客户端发送502(Bad Gateway)响应.如果这是用户代理收到的响应消息,则用户代理必须关闭与服务器的连接并丢弃收到的响应.

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