为什么HTTP响应主体在开头包含“2fb”?

时间:2013-02-19 11:11:04

标签: php api http

我在PHP中使用fsockopen()进行一些API请求。对于大多数正常工作的API,但是从http://geocoding.cloudmade.com/我得到以下(RAW)响应:

HTTP/1.1 200 OK
Server: nginx/0.6.35
cache-control: no-cache
Content-Type: application/json; charset=utf-8
Date: Tue, 19 Feb 2013 11:08:05 GMT
pragma: no-cache
Transfer-Encoding: chunked
Connection: close

2fb
{"found": 1, "bounds": [[52.48732, 13.42553], ...
0

我的问题是第一行中的“2fb”和身体最后一行中的“0”并没有告诉我任何事情。如果我通过Firefox发送相同的请求,则正文不包含“2fb”或“0”。因此,我猜它有一些意义。但是什么?

感谢提示!

1 个答案:

答案 0 :(得分:4)

这是chunked transfer-coding,也由Transfer-Encoding: chunked响应标头指示:

  

分块编码会修改消息正文      将其转换为一系列块,每个块都有自己的大小指示器,      然后是包含entity-header字段的可选预告片。这个      允许动态生成的内容与之一起传输      收件人验证其所需的信息      收到了完整的信息。

2fb,后跟\r\n,表示后续块的大小(763字节)。大小为0表示最后一个块。