17 - 03 - 31 图解HTTP(35)

来源:互联网 发布:做微信表情的软件 编辑:程序博客网 时间:2024/05/02 01:15

###### 实体首部字段 ######

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息。


# Allow # 

ex : Allow: GET, HEAD

首部字段Allow用于通知客户端能够支持 Request-URI  指定资源的所有HTTP方法。

当服务器接收到不支持的HTTP方法时,会以状态码 405 Method Not Allowed  作为响应返回。

与此同时,还会把所有能支持的HTTP方法写入首部字段 Allow后返回。

 

# Content-Encoding #

ex: Content-Encoding: gzip

首部字段 Content-Encoding会告知客户端服务器对实体的主体部分选用的内容编码方式。

内容编码是指在不丢失实体信息的前提下所进行的压缩。

主要采用以下 4  种内容编码的方式:

gzip  

compress  

deflate 

identity


# Content-Language #

ex : Content-Language: zh-CN

首部字段 Content-Language  会告知客户端,实体主体使用的自然语言(指中文或英文等语言)。


# Content-Length #

ex : Content-Length: 15000

首部字段Content-Length表明了实体主体部分的大小(字节)。

对实体主体进行内容编码传输时,不能再用 Content-Length  首部字段。(

实体主体大小的计算方法复杂,参考RFC2616的 4.4)


#  Content-Location  #

ex : Content-Location: http://www.hackr.jp/index-ja.html

首部字段Content-Location给出与报文主体部分相对应的URI。

和首部字段Location不同,Content-Location表示的是报文主体返回资源对应的URI。

如对于使用首部字段Accept-Language  的服务器驱动型请求,当返回的页面内容与实际请求的对象不同

时,首部字段 Content-Location内会写明 URI。(访问http://www.hackr.jp/  返回的对象却是

http://www.hackr.jp/index-ja.html  等类似情况)


#  Content-MD5  #


图:客户端会对接收的报文主体执行相同的 MD5  算法,然后与首部字段 Content-MD5  的字段值比较

ex: Content-MD5: OGFkZDUwNGVhNGY3N2MxMDIwZmQ4NTBmY2IyTY==

首部字段 Content-MD5  是一串由 MD5  算法生成的值,其目的在于检查报文主体在传输过程中是否保持完
整,以及确认传输到达。
对报文主体执行 MD5  算法获得的 128  位二进制数,再通过 Base64  编码后将结果写入 Content-MD5  字段
值。由于 HTTP  首部无法记录二进制值,所以要通过 Base64  编码处理。为确保报文的有效性,作为接收方
的客户端会对报文主体再执行一次相同的 MD5  算法。计算出的值与字段值作比较后,即可判断出报文主体的
准确性。
采用这种方法,对内容上的偶发性改变是无从查证的,也无法检测出恶意篡改。其中一个原因在于,内容如
果能够被篡改,那么同时意味着 Content-MD5  也可重新计算然后被篡改。所以处在接收阶段的客户端是无法
意识到报文主体以及首部字段 Content-MD5  是已经被篡改过的。





1 0
原创粉丝点击