我正在尝试测试服务器以查看它是否符合下面的定义,为此,我需要构建并从上游服务器向网关服务器发送无效响应。 HTTP规范说明了关于状态代码502 - Bad Gateway的以下内容。
502(Bad Gateway)状态代码表示服务器,而 充当网关或代理,收到来自的无效响应 尝试完成请求时访问的入站服务器。
但究竟什么构成无效回应?非标准响应代码(例如6789之类的随机数)是否算作无效响应?或者HTTP版本无效的响应?
遇到此this,其中说不完整的标头和响应正文可能导致502错误。服务器如何确定标头或正文是否不完整?更重要的是,是否有可能以编程方式创建这样的响应(我正在使用Java)?
答案 0 :(得分:5)
我设法在HTTP规范中找到了以下内容(RFC7230第3.3.3节)。
如果收到的邮件没有Transfer-Encoding且带有 多个Content-Length头字段有不同 字段值或单个Content-Length头字段具有 无效的值,然后消息框架无效和 收件人必须将其视为不可恢复的错误。如果这是一个 请求消息,服务器必须响应400(错误请求) 状态代码然后关闭连接。如果这是一个回应 代理收到的消息,代理必须关闭连接 到服务器,丢弃收到的响应,并向客户端发送502(Bad Gateway)响应。如果这是响应消息 用户代理收到的用户代理必须关闭 连接到服务器并丢弃收到的响应。
除此之外,我还注意到当上游服务器关闭时,Nginx在充当反向代理/负载均衡器时会返回502。