之前文章中简介过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)演 变过来的。该首部通常会告知用户一些与缓存相关的问题的警告。