第六章 HTTP实体首部字段
作者:肖鹏-SpiritLing 时间:2019-01-25
6.0.1 响应首部字段列表
首部字段名 | 说明 |
---|---|
Allow | 服务器支持的HTTP请求方法 |
Content-Encoding | 编码方式 |
Content-Language | 实体主体使用的自然语言 |
Content-Length | 实体部分大小 |
Content-Location | 返回资源的URI |
Content-MD5 | 主题执行md5算法 |
Content-Range | 范围请求 |
Content-type | 媒体类型 |
Expires | 资源到期时间 |
Last-Modified | 最终修改时间 |
6.0.2 响应首部字段
实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体时间相关的信息。
第一节 Allow 字段
Allow : GET,HEAD
复制
首部字段 Allow
用于通知客户端能够支持 Request-URI
指定资源的所有 HTTP 方法。 当服务器接收到不支持的 HTTP 方法时,会以状态码 405 Method Not Allowed
作为响应返回。与此同时,还会把所有能支持的 HTTP 方法写入首部字段 Allow
后返回。
第二节 Content-Encoding 字段
Content-Encoding: gzip
复制
首部字段 Content-Encoding
会告知客户端服务器对实体的主体部分选用的内容编码方式。内容编码是指在不丢失实体信息的前提下所进行的压缩。主要采用以下4种方式:
- gzip
- compress
- deflate
- identity
第三节 Content-Language 字段
Content-Language: zh-CN
复制
首部字段 Content-Language
会告知客户端,实体主体使用的自然语言(指中文或英文等语言)。
第四节 Content-Length
Content-Length: 15000
复制
首部字段 Content-Length
表明了实体主体部分的大小(单位是字节)。对实体主体进行内容编码传输时,不能再使用 Content-Length
首部字段。由于实体主体大小的计算方式略微有些复杂,所以在此不再展开。若想一探究竟,可参考 RFC2616 的 4.4 。
第五节 Content-Location 字段
Content-Location: httpo://www.example.com/index.html
复制
首部字段 Content-Location
给出与报文主题部分相对应的URI。和首部字段 Location
不同, Content-Location
表示的是报文主体返回资源对应的 URI。比如,对于使用首部字段 Accept-Language
的服务器驱动型请求,当返回的页面内容与实际请求的对象不同时,首部字段 Content-Location
内会写明 URI。(访问 http://www.example.com/ 返回的对象却是 http://www.example.com/index.html 等类似情况)。
第六节 Content-MD5 字段
Content-MD5: ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=
复制
首部字段 Content-MD5
是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
对报文主体执行 MD5 算法获得218位二进制数,再通过 Base64 编码后将结果写入 Content-MD5
字段值。由于 HTTP 首部无法记录二进制值,所以要通过 Base64 编码处理。为确保报文有效性,作为接受方的客户端会对报文主体在执行一次相同的MD5算法。计算出的值与字段值作比较候鸟,即可判断出报文主体的准确性。
采用这种方法,对内容上的偶发生性改变是无从查证的,也无法检测出恶意篡改。其中一个原因在于,内容如果能够被篡改,那么同时意味着 Content-MD5
也可重新计算然后被篡改。所以处在接受阶段的客户端是无法意识到报文主体以及首部字段 Content-MD5
是已经被篡改过的。
第七节 Content-Range 字段
Content-Range: bytes 5001-10000/10000
复制
针对范围请求,返回响应时使用的首部字段 Content-Range
,能告知客户端作为响应返回的实体哪个部分符合范围请求。字段值以字节为单位,表示当前发送部分及整个实体大小。
第八节 Content-Type 字段
Content-Type: text/html; charset=utf-8
复制
首部字段 Content-Type
说明实体主体内对象的媒体类型。和首部字段 Accept
一样,字段值用 type/subtype
形式赋值。
第九节 Expires 字段
Expires: Wed, 04 Jul 2012 08:26:05 GMT
复制
首部字段 Expires
会将资源失效日期告知客户端。缓存服务器在接收到含有首部字段 Expires
的响应后,会以缓存来应答请求,在 Expires
字段值指定的时间之前,响应的副本会一直被保存。当超过指定的时间后,缓存服务器在请求发送过来时,会转向源服务器请求资源。源服务器不希望缓存服务器对资源缓存时,最好在 Expires
字段内写入与首部字段 Date 相同的时间值。但是,当首部字段 Cache-Control
有指定 max-age
指令时,比起首部字段 Expires
,会优先处理 max-age
指令。
第十节 Last-Modified
Last-Modified: wed, 25 May 2018 09:11:40 GMT
复制
首部字段 Last-Modified
指明资源最终修改时间。一般来说,这个值就是 Request-URI
指定资源被修改的时间。但类似使用 CGI 脚本进行动态数据处理时,该值有可能会变成数据最终修改时的时间。
作者:肖鹏-SpiritLing 时间:2019-01-25