Page 399 - HTTP权威指南
P. 399
HTTP/1.1 200 OK<CR><LF>
响应流 Content-type: text/plain<CR><LF>
Transfer-encoding: chunked<CR><LF>
HTTP响应 Trailer: Content-MD5<CR><LF>
<CR><LF>
十六进制表示的分块大小(十六进制的27`39个字符)
第1块
27<CR><LF>
We hold these truths to be self-evident<CR><LF>
第2块 26<CR><LF>
, that all men are created equal, that<CR><LF>
84<CR><LF>
第3块 they are endowed by their Creator with certain
unalienable Rights, that among these are Life,
Liberty and the pursuit of Happiness.<CR><LF>
0<CR><LF>
最后一块
Content-MD5:gjqei54p26tjisgj3p4utjgrj53<CR><LF>
拖挂 * *可选——仅当报文首部中有Trailer首部时才出现
357 图 15-6 剖析分块编码报文
2. 分块报文的拖挂
如果客户端的 TE 首部中说明它可以接受拖挂的话,就可以在分块的报文最后加上拖
挂。产生原始响应的服务器也可以在分块的报文最后加上拖挂。拖挂的内容是可选的
元数据,客户端不一定需要理解和使用(客户端可以忽略并丢弃拖挂中的内容)。 9
拖挂中可以包含附带的首部字段,它们的值在报文开始的时候可能是无法确定的
(例如,必须要先生成主体的内容)。Content-MD5 首部就是一个可以在拖挂中发送
的首部,因为在文档生成之前,很难算出它的 MD5。图 15-6 中展示了拖挂的使用
方式。报文首部中包含一个 Trailer 首部,列出了跟在分块报文之后的首部列表。
在 Trailer 首部中列出的首部就紧接在最后一个分块之后。
除了 Transfer-Encoding、Trailer 以及 Content-Length 首部之外,其他 HTTP
首部都可以作为拖挂发送。
注 9: trailer(拖挂)首部是在最初的分块编码被加入到 HTTP/1.1 规范的草案之后才加入的,因此有些
应用程序可能不理解这个首部(或者不理解拖挂),尽管它们声称是兼容 HTTP/1.1 的。
374 | 第 15 章