HTTP|HTTP通用首部字段详解

本文详解HTTP除了Cache-Control之外的通用首部字段

1>Connection

    connection首部字段具备如下两个作用:

  1. 控制不再转发给代理的首部字段

  2. 管理持久连接

Connection: 不再转发的首部字段名

    在客户端发送请求和服务器返回响应内,使用Connection首部字段,可以控制不再转发给代理的首部字段(即Hop-by-hop首部字段)。

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

Connection: close

    HTTP/1.1之前的HTTP版本默认连接是非持久性连接。为此,如果想在旧版的HTTP协议上维持持久性连接,就必须要指定Connection首部字段为Keep-Alive。

2>Date

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

3>Pragma

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

    规范定义的形式唯一,如下所示:

Pragma: no-cache

    该首部字段只用于客户端发送请求中。客户端会要求所有的中间服务器不返回缓存的资源。

    如果所有的中间服务器都能够遵守HTTP/1.1,那么直接采用Cache-Control: no-cache指定缓存的处理方式就是最理想的。但是要知道网络链路中是否所有的服务器都使用HTTP/1.1及以后版本是不现实的。因此,发送的请求会同时包含下面的两个首部字段:

Cache-Control: no-cache
Pragma: no-cache

4>Trailer

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

HTTP|HTTP通用首部字段详解_第1张图片

    在上面的例子中,指定首部字段Trailer的值为Expires,在报文主体后(分块长度0之后)出现了首部字段Expires。

5>Transfer-Encoding

    首部字段Transfer-Encoding规定了传输报文主体时采用的编码方式。HTTP/1.1的传输编码方式仅对分块传输编码有效。

HTTP|HTTP通用首部字段详解_第2张图片

    上面这个例子中,有效使用分块传输编码并且分别被分为3312字节和914字节大小的分块数据。

6>Upgrade

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

    Upgrade首部字段产生作用的Upgrade对象仅限于客户端和临近服务器之间。因此,使用首部字段Upgrade时,还需要额外指定Connection:Upgrade。

7>Via

    使用首部字段Via是为了追踪客户端和服务器之间的请求和响应报文的传输路径。

    报文经过代理或者网关时,会先在首部字段Via中附加该服务器的信息,然后再进行转发。该字段不仅用于追踪报文的转发,还可以避免请求回环的发生。所以必须在经过代理时附加该首部字段内容。

8>Warning

    该首部字段是从HTTP/1.0的响应首部演变过来的,该首部通常会告知用户一些与缓存相关的问题的警告。

    Warning首部的格式如下。最后的日期时间部分可以省略。

Warning:[警告码][警告的主机:端口号]"[警告内容]"([日期时间])

    HTTP/1.1中定义了7种警告。警告码对应的警告内容仅推荐参考。警告码具有拓展性,今后可能会追加新的警告码。

HTTP|HTTP通用首部字段详解_第3张图片
HTTP|HTTP通用首部字段详解_第4张图片

你可能感兴趣的:(HTTP)