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 ”一书,非常不错,有中文译本: