HTTP格式

    每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的。

    HTTP协议是一种文本协议,所以,它的格式也非常简单。HTTP GET请求的格式:

    GET path HTTP1.1

    Header1: Value1

    Header2: Value2

    Header3: Value3

    每个Header一行一个,换行符是 \r\n

    HTTP POST请求的格式:

    POST path HTTP1.1

    Header1: Value1

    Header2: Value2

    Header3: Value3



    body data goes here…

    当遇到连续两个 \r\n 时,Header部分结束,后面的数据全部是Body。

    HTTP响应的格式:

    200 OK

    Header1: Value1

    Header2: Value2

    Header3: Value3



    body data goes here…

    HTTP响应如果包含body,也是通过 \r\n\r\n 来分隔的。请再次注意,Body的数据类型由 Content-Type 头来确定,如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

    当存在 Content-Encoding 时,Body数据是被压缩的,最常见的压缩方式是gzip,所以,看到 Content-Encoding: gzip 时,需要将Body数据先解压缩,才能得到真正的数据。压缩的目的在于减少Body的大小,加快网络传输。

    要详细了解HTTP协议,推荐“ HTTP: The Definitive Guide ”一书,非常不错,有中文译本:

    HTTP权威指南