Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 头标题不同于获取、分块传输_Http_Standards_Haproxy - Fatal编程技术网

Http 头标题不同于获取、分块传输

Http 头标题不同于获取、分块传输,http,standards,haproxy,Http,Standards,Haproxy,测试中的web应用程序的行为很奇怪。HEAD请求返回头Content Length,但随后的GET返回Transfer Encoding:chunked。我希望标题是相等的,所以我的问题是:这种行为有多合法,有多普遍 更新事实证明,问题的根本原因是HAProxy的行为。如果这是一个HEAD请求,那么响应会像从下面的应用程序一样传播。但是对于GET它应用压缩并设置分块传输。我将把这个问题作为一个非主题来结束,也许会在ServerFault上提问。如果HTTP服务器启用了“Chunked trans

测试中的web应用程序的行为很奇怪。
HEAD
请求返回头
Content Length
,但随后的
GET
返回
Transfer Encoding:chunked
。我希望标题是相等的,所以我的问题是:这种行为有多合法,有多普遍


更新事实证明,问题的根本原因是HAProxy的行为。如果这是一个
HEAD
请求,那么响应会像从下面的应用程序一样传播。但是对于
GET
它应用压缩并设置分块传输。我将把这个问题作为一个非主题来结束,也许会在ServerFault上提问。

如果HTTP服务器启用了
“Chunked transfer encoding”
,并且没有发送
“Content Length”,则
HEAD
方法响应不会返回实体体,而是
GET
以实体体响应
在响应中,由于未使用,服务器在开始向客户端发送响应之前不需要知道内容的长度。服务器可以在知道动态生成的内容的总大小之前开始向客户端传输该内容。也许这是最可能的解释。

如果服务器对GET使用分块编码,但返回头部的内容长度,这表明为头部返回的信息不太可能正确。

是的,
内容长度和分块编码是互斥的,但是在这方面,
HEAD
GET
的结果会不同吗?我不是很确定,RFC说应该是相同的,但是启用了chuncked transfer似乎不是。在我的情况下,
Content Length
的值肯定是正确的。在这种情况下,服务器会额外计算HEAD上的长度,但这并不意味着什么。这当然很奇怪。我同意@JulianReschke的观点:服务器在GET请求中通常有更多的可用信息,因为它们自然需要花费至少与POST请求相同的精力来生成响应。相反,服务器应该希望在HEAD请求上花费尽可能少的时间。如果HEAD响应包含准确的内容长度,那么相应的GET响应也没有理由不包含(分块编码几乎意味着“计算总内容长度太昂贵”)