7 信息主体
信息主体是由信息头和信息主体两部分组成的,除非被Status-code或是请求方法限制了,导致没有信息主体(为空)。我们在这章讨论的时候,发送和请求是辩证唯物的。当客户端请求服务器的时候,客户端是发送方,而服务器是接收方,但是服务器返回信息的时候,服务器是发送方,而客户端则是接收方。
entity-header = Allow ; Section 14.7 | Content-Encoding ; Section 14.11 | Content-Language ; Section 14.12 | Content-Length ; Section 14.13 | Content-Location ; Section 14.14 | Content-MD5 ; Section 14.15 | Content-Range ; Section 14.16 | Content-Type ; Section 14.17 | Expires ; Section 14.21 | Last-Modified ; Section 14.29 | extension-header
extension-header = message-header 以上实体部分,有些选项是可选的,有些则是必须的。其中的extension-header可以不用升级协议版本就可以扩展信息主体,但是你不能期望人家 接收方能够正确的识别,如果对方识别不了,这个扩展区将被忽略,但是代理转发的时候,你不能随意的忽略这个扩展区,这很好理解,因为你是代理 你又不知道人家接收方能不能识别这个扩展信息。
entity-body = *OCTET 如果实体存在的话,他的编码方式是在信息头域的Transfer-Encoding来决定的,这东西就是用来保证信息能够被正确的传输。 如果实体信息存在的话,他们会由头域的Content-Encoding和Content-Type来确定的,这些头域定义了两层顺序的编码模型,例如:
entity-body := Content-Encoding( Content-Type( data ) ),其中前者一般用于定义使用了什么压缩方式,而后者type表示请求的是什么类型 如果没有指定,他就会去猜,实在猜不到就application/octet-stream这样了 实体信息的长度是编码前的长度,4.4节已经定义了,如果去确定信息的长度。