X

HTTP/1.1阅读之信息实体

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节已经定义了,如果去确定信息的长度。
Tags: 学习笔记
龙安_任天兵: 不忘初心,方得始终!