正在测试的Web应用程序以奇怪的方式运行。 HEAD
请求会返回标头Content-Length
,但后续GET
会返回Transfer-Encoding: chunked
。我希望标题相等,RFC says SHOULD,所以我的问题是:这种行为的合法性和常见程度如何?
UPDATE 事实证明,问题的根本原因是HAProxy的行为。如果这是HEAD
请求,则响应将按原样从下面的应用程序传播。但是对于GET
,它应用压缩并设置分块传输。我将这个问题作为一个偏离主题关闭,也许会在ServerFault上询问。
答案 0 :(得分:1)
如果服务器对GET使用chunked编码,但是为HEAD返回Content-Length,则这是IMHO,表明为HEAD返回的信息不太可能是正确的。
答案 1 :(得分:0)
HEAD
方法响应不返回实体主体,但GET
响应实体主体,如果HTTP服务器启用了"Chunked transfer encoding"
则不发送{{1}在响应中因为未使用,服务器在开始向客户端发送响应之前不需要知道内容的长度。在知道该内容的总大小之前,服务器可以开始将动态生成的内容发送到客户端。也许这是最可能的解释。