第八节 Via 字段

作者:肖鹏-SpiritLing 时间:2018-07-15

Via 为了追踪客户端与服务器之间的请求和响应报文的传输路径。

报文经过代理或网关时,会先在首部字段 Via 中附加该服务器的信息,然后再进行转发。这个做法和 traceroute 及电子邮件的 Received 首部的工作机制很类似。

首部字段 Via 不仅用于追踪报文的转发,还可以避免请求回环的发生。所有必须在经过代理时附加该首部字段内容。

客户端

数据包

代理服务器A

数据包

代理服务器B

==>

GET / HTTP/1.1

==

==>

GET / HTTP/1.1

==

==>

Via: 1.0 gw.example.com(Squid/3.1)

==

上图用例中,在经过代理服务器 A 时,Via 首部附加了 “1.0 gw.example.com(Squid/3.1)”这样的字符串值。行头的1.0是指接受请求的服务器上应用的HTTP版本协议。接下来经过,若果存在更多的代理服务器亦是如此,在 Via 首部附加服务器信息,也可增加 1 个新的 Via 首部写入服务器信息。

Via 首部是为了追踪传输路径,所以经常会和 TRACE 方法一起使用。比如,代理服务器接受到由 TRACE 方法发送过来的请求(其中 Max-Forwards: 0)时,代理服务器就不能再转发该请求了。这种情况下,代理服务器会将自身的信息附加到 Via 首部后,返回该请求的响应。

作者:肖鹏-SpiritLing 时间:2018-07-15