HTTP Chunked传输编码

时间:2016-03-19 03:37:54

标签: http chunked-encoding

来自维基百科:

  

对于HTTP协议的1.1版,即使未在TE(传输编码)请求头字段中列出,也可以认为分块传输机制始终是可接受的

这就是我从客户那里得到的东西(Mozilla,Opera):

  

获取http://www.google.com/ HTTP / 1.1   主持人:www.google.com   User-Agent:Mozilla / 5.0(X11; Ubuntu; Linux x86_64; rv:45.0)Gecko / 20100101 Firefox / 45.0   接受:text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8   Accept-Language:en-US,en; q = 0.5   Accept-Encoding:gzip,deflate   连接:保持活力

显然在那里没有Transfer-Encoding字段,也没有看到任何块(我已经用HEX编辑器检查过,没有其他符号)。

我按如下方式打开连接(Python)

socket.socket(socket.AF_INET, socket.SOCK_STREAM)

是否较低级别处理将块连接到消息中?是这样,我怎么知道HTTP消息的结束位置,以便我可以停止读取请求并开始处理它?

1 个答案:

答案 0 :(得分:1)

您应该阅读规范。

但简单地说,在这种情况下,因为它是GET,并且没有内容,所以不会有Content-Length标头。所以,当你只用CR / LF获得空行时就停止阅读。

否则,您读取该空行,并阅读Content-Length bytes。