你必须知道的常用的报文首部字段( 四 )


Transfer-Encoding

你必须知道的常用的报文首部字段

文章插图
 
首部字段Transfer-Encoding规定了传输报文主体时采用的编码方式 。
HTTP/1.1的传输编码方式仅对分块传输编码有效 。
你必须知道的常用的报文首部字段

文章插图
 
以上用例中,正如在首部字段Transfer-Encoding中指定的那样,有效使用分块传输编码,且分别被分成3312字节和914字节大小的分块数据 。
Upgrade
首部字段Upgrade用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议 。
你必须知道的常用的报文首部字段

文章插图
 
上图用例中,首部字段Upgrade指定的值为TLS/1.0 。请注意此处两个字段首部字段的对应关系,Connection的值被指定为Upgrade 。Upgrade首部字段产生作用的Upgrade对象仅限于客户端和邻接服务器之间 。因此,使用首部字段Upgrade时,还需要额外指定Connection:Upgrade 。
对于附有首部字段Upgrade的请求,服务器可用101 SwitchingProtocols状态码作为响应返回 。
Via
使用首部字段Via是为了追踪客户端与服务器之间的请求和响应报文的传输路径 。
报文经过代理或网关时,会先在首部字段Via中附加该服务器的信息,然后再进行转发 。这个做法和traceroute及电子邮件的Received首部的工作机制很类似 。
首部字段Via不仅用于追踪报文的转发,还可避免请求回环的发生 。所以必须在经过代理时附加该首部字段内容 。
你必须知道的常用的报文首部字段

文章插图
 
在经过代理服务器A时,Via首部附加了“1.0 gw.hackr.jp (Squid/3.1)”这样的字符串值 。行头的1.0是指接收请求的服务器上应用的HTTP协议版本 。接下来经过代理服务器B时亦是如此,在Via首部附加服务器信息,也可增加1个新的Via首部写入服务器信息 。
Via首部是为了追踪传输路径,所以经常会和TRACE方法一起使用 。比如,代理服务器接收到由TRACE方法发送过来的请求(其中Max-Forwards: 0)时,代理服务器就不能再转发该请求了 。这种情况下,代理服务器会将自身的信息附加到Via首部后,返回该请求的响应 。
Warning
HTTP/1.1的Warning首部是从HTTP/1.0的响应首部(Retry-After)演变过来的 。该首部通常会告知用户一些与缓存相关的问题的警告 。
你必须知道的常用的报文首部字段

文章插图
 
Warning首部的格式如下 。最后的日期时间部分可省略 。
你必须知道的常用的报文首部字段

文章插图
 
HTTP/1.1中定义了7种警告 。警告码对应的警告内容仅推荐参考 。另外,警告码具备扩展性,今后有可能追加新的警告码 。
你必须知道的常用的报文首部字段

文章插图
 




推荐阅读