《图解HTTP》学习记录五(报文首部字段①)

2016-10-16  本文已影响0人  Iswine

报文分为请求报文与响应报文,除开报文实体的差异之外,两者的报文首部内容上也不尽相同。下图是访问www.baidu.com的报文首部截图:

可见,请求报文首部第一行是由“请求方法+协议及其版本”组成的请求行,响应报文首部的第一行则是“状态码+协议及其版本组成的”状态行。此外,包含各种首部字段的HTTP首部字段行也是有差别的,一般将HTTP首部字段语句分为:通用首部字段、请求首部字段、响应首部字段、实体首部字段。所有的字段格式都是“key:value”这种形式,如果value值有多个,中间用逗号隔开。接下来,来具体介绍首部字段的各种属性值:

通用首部字段

即,响应报文和请求报文中均可以存在的首部字段,具体包括:
1.Cache-Control
用以操纵缓存的工作机制,虽为通用首部字段,但其参数指令在请求报文首部与响应报文首部略有不同:

2.Conection
两个作用,其一是控制不再转发的首部字段名;其二是管理持久连接。

3.Data
表示该HTTP报文所创立的日期与时间。

4.Trailer
事先说明在报文主体后记录了哪些首部字段。

5.Transfer-Encodding
规定了传输报文主体时采用何种编码形式。

6.Upgrade
用以检测HTTP协议及其它协议是否可使用更高版本进行通信,其参数可以指定一个完全不同的通信协议,如:Upgrade: TSL/1.0,HTTP/1.1

7.Via
用于记录经过代理服务器的转发情况,常与Trace方法一块使用。

8.Warning
警告!

请求报文首部字段

请求报文首部字段意为只有请求报文特有的,只会出现在请求报文中的首部字段。用于补充请求的附加信息,客户端信息 以及对响应内容的优先级等等。
1.Accept
Accept字段可以告知服务器,用户代理能够处理的媒体类型及其优先级,可用type/subtype的这种形式来一次指定多个媒体类型,如:

若想要给显示的媒体类型添加优先级,则使用 q=(0~1)来表示权重值,当服务器提供多种内容时,将会首先返回权重值最高的媒体类型。

2.Accept-Charset/Accept-Encoding/Accept-Language
这三个分别表示通知服务器用户代理所能支持的字符集/编码类型/以及支持的语言。同样的他们也能用q=(0~1)来表示优先级。

3.Authorization
告知服务器,用户代理的认证登录信息,是服务器返回401状态码用户登录后,给请求添加的登录信息,现在基本上不会使用这种方法。

4.From
来告知服务器用户的邮箱,仅仅是留下一个联系方式。

5.Host
它将告知服务器,请求的资源所处的互联网主机名和端口号,Host首部字段是HTTP/1.1规范中唯一一个必须包含在请求首部内的首部字段。由于一个IP地址下可能存在多个域名,所以需要Host来告诉服务器具体请求的是哪个资源。

6.Range
范围请求,告知服务器索取资源的范围。如:Range: bytes = 5000-10000意为请求获取从第5000个字节到10000个字节的资源。若获取成功,会抛出206,返回范围资源;失败,则抛出200,返回所有资源。

7.If-Match/If-Modified-Since/If-None-Match/If-Range/If-Unmodified-Since
形如If-xxx的这种请求首部字段称为条件请求,意为服务器只有满足条件请求的内容,才会执行请求。

8.Max-Forwards:通过TRACE方法或OPTIONS方法时,发送包含字段请求时,将以十进制形式指定经过服务器的最大数目。例如:Max-Forwards:3,规定经过服务器数目为3,没经过一个服务器其值将会-1,当其值为0时,所在服务器强制返回响应。

9.Refer
告知服务器请求原始资源的URL,出于安全性考虑也可以考虑不发送该字段。

10.TE
告知服务器客户端能够处理的传输编码方式及其优先级,他与Accept-Encoding很像,但仅用于传输编码。

11.User-Agent:该字段会将创建请求的浏览器及用户代理等信息传达个服务器。

上一篇下一篇

猜你喜欢

热点阅读