《HTTP 权威指南》笔记:第十五章 实体与编码
作者:互联网

如果把 「HTTP 报文」想象为因特网货运系统的「箱子」,那么「HTTP 实体」就是报文中的实际的「货物」.
其中,实体又包含了「实体首部」 和 「实体主体」,实体首部用于描述各种参数,实体主体时原始货物.
常见的实体首部
实体的大小: Content-Length
定义:
报文的字节的数量
功能:
HTTP 的早期版本用 Content-Length.来判断是否关闭连接,进而判断报文结束.
注意:
- 持久连接必须有 Content-Length ,因为连接是持久的,因此客户端无法依赖连接关闭来判别报文的结束.
- 经过内容编码之后,说明的是编码之后的报文主体的长度.
实体摘要: Content-MD5
定义:对报文主体进行 MD5 算法得到的结果
功能:防止报文被篡改
媒体类型: Content-Type
定义:主体的 MIME 类型
注意:经过内容编码之后, Content-type 首部说明的仍是编码之前实体主体的类型.
一种Content-type:multipart
定义:报文中存在多个报文,合成一个复杂的报文发送
功能:支持多部分主体,常常用于填写表格
内容编码: Content-Encoding
定义:为了达到减少传输时间的目的,对主体内容进行压缩.
类型:
内容编码的类型是 Content-Encoding 的值,有下面几种:
- gzip
- compress
- deflate
- identity(没有编码,当没有 Content-Encoding 时的值)
传输编码: Transfer-Encoding
定义
与内容编码仅仅把报文主体内容编码不同, 传输编码将整个报文进行编码.
分块编码
定义:将报文分割为大小已知的块,块与块紧挨着发送.
格式:以长度值为 0 的块代表主体结束.
特点:不需要知道 Content-length(在主体是动态创建的情况下很实用)
实例操控 instance manipulations
定义:在不同的时间下,一个对象可能有不同的版本.要求客户端能够标示它所拥有的资源的副本,并且在一定的条件下请求实例.
主要有两种办法进行实体操控:
- 范围请求
- 差异编码
范围请求:Accept-Ranges
定义:
允许客户端在副本不再有效的情况下,不请求完整副本,只请求文档的一个范围
应用:
下载中断的文件在重新下载时不需要重头开始下载.
差异编码:A-IM
定义:
当页面的内容发生变化的时候,即使改动的内容很少,也要重新请求.
差异编码指的是客户端愿意服务器只发送改变的部分,以更快地得到更新的页面.
A-IM 这个 header
A-IM: 是 Accept Instance Manipulation 的缩写,其功能相当于:
客户端说:“哦,对了,我能接受某些形式的实例操控,如果你会其中的一种的话,就不用发完整的文档给我了.”
缺陷
如果一个网页更新比较频繁,服务器为了能够更快地进行差异计算,于是需要把各个版本的文档储存在服务器上,导致硬盘的空间减少.
标签:主体,编码,HTTP,定义,报文,实体,Content,第十五章 来源: https://www.cnblogs.com/FBsharl/p/10662670.html