通用首部字段详解-四大首部字段之一

1,864 阅读3分钟

之前文章中简介过http/1.1的通用首部字段《常见通用首部字段》,但是在那篇文章只是简介一下,没有具体解释,不少小伙伴看完也是一知半解,接下来咱们就看一下通用首部字段的详解。

由于Cache-Control 比较特殊,会在《Cache-Control 用法》,今天就不在这讲解了

1 Connection 

Connection 有两个作用。

  • 控制不再转发给代理的首部字段
  • 管理持及连接

控制不在转发给代理的首部字,看图


控制持久连接,看图


http/1.1版本的默认连接都是持久连接。为此,客户端会持久连接上持续发送请求,当服务器端想明确断开时,则指定Connect 首部字段值为Close


2 date

首部通用字段Date表明创建http报文的日期和时间。

3 Pragma报文指令

pragma是http/1.1 之前版本的历史遗留字段,仅作为与http/1.0的向后兼容而定义。

规范定义的形式唯一

Pragma:no-cache

该首部字段虽然属于通用字段,但只用于客户端送请求中。客户端可以要求所有的中间服务器不返回缓存的资源。


所有的中间服务器如果都是以http/1.1为基准,那么直接采用Cache-Control:no-cache指定不走缓存最为理想。但要整体掌控全部中间服务器使用http协议版本是不现实的,因此,发送请求时会同时包含下面两个首部字段

Cache-Control:no-cache

Pragma:no-cache

4 Trailer 报文末端一览,看图

首部字段Trailer会事先说明在报文主体后记录了那些首部字段。该首部字段可应用在HTTP/1.1版本分块传输编码时



5 Transfer-Encoding 报文主体传输编码,看图



Transfer-Encoding 规定了传输报文主体时采用的编码方式。

http/1.1的传输随编码方式近对分块传输编码有效


图中的用例,首部字段Transfer-Encoding中指定的那样,有效使用分块传输编码,且分别被分成3312字节和914字节大小的分块数据


6 Upgrade 协议升级

首部字段 Upgrade用于检测http协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议

上图用例中,首部字段 Upgrade 指定的值为 TLS/1.0。请注意此处两 个字段首部字段的对应关系,Connection 的值被指定为 Upgrade。 Upgrade 首部字段产生作用的 Upgrade 对象仅限于客户端和邻接服务 器之间。因此,使用首部字段 Upgrade 时,还需要额外指定 Connection:Upgrade。

对于附有首部字段 Upgrade 的请求,服务器可用 101 Switching Protocols 状态码作为响应返回。

7 Via 代理服务器信息

via首部字段主要是用于记录客户端和中转服务器之间路径的记录。首部字段Via不仅用于记录报文转发路径还可以避免请求回环的发生,所以必须在经过的代理上附加首部字段。

8 Wraning 警告信或者错误信息

HTTP/1.1 的 Warning 首部是从 HTTP/1.0 的响应首部(Retry-After)演 变过来的。该首部通常会告知用户一些与缓存相关的问题的警告。