请求首部字段是从客户端向服务器端发送请求报文中所需要使用的字段。它用来补充请求的附加信息、客户端信息、对相应内容相关的优先级等。
本文详细讲解以下请求首部字段:Except、From、Host、If-Match、If-Modified-Since、If-None-Match、If-Range和 If-Unmodified-Since 。
- Except
客户端首先使用Except字段来告知服务器,期望出现某种特殊行为,因服务器无法理解客户端的期望作出回应而发生错误时,会返回状态码 417 Expectation Failed。
客户端可以使用该字段来写明所期望的拓展,虽然HTTP/1.1规定只定义了100-continue(状态码100 Continue)之意。等待状态码 100 响应的客户端在发生请求时,需要指定 Expect:100continue。
- From
该首部字段用以告知服务器使用代理的用户的电子邮箱地址。通常情况下是为了显示搜索引擎等用户代理的负责人的联系方式。
使用代理时应该尽可能标明该字段,但是有些代理不同,可能会在User-Agent字段标明负责人的联系方式。
- Host
该首部字段会告知服务器所请求的资源所处互联网主机名和端口号。该字段是HTTP/1.1明确规定必须包含在请求内的首部字段。
当多台虚拟主机共享一个IP地址时,使用该字段就可以加以区分,这就是Host字段的存在的意义。
若服务器未设定主机名,那直 接发送一个空值即可。如下所示:
- If-Match
形如 If-xxx 这种样式的请求首部字段,都可称为条件请求。服务器接收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
首部字段 If-Match,属附带条件之一,它会告知服务器匹配资源所用的实体标记(ETag)值。服务器会比对 If-Match 的字段值和资源的 ETag 值仅当两者一致时,才会执行请求。反之,则返回状态码 412 Precondition Failed 的响应。
还可以使用星号(*)指定 If-Match 的字段值。针对这种情况,服务器将会忽略 ETag 的值,只要资源存在就处理请求。
- If-Modified-Since
如果在 If-Modified-Since 字段指定的日期时间后,资源发生了 更新,服务器会接受请求。
该字段用于确认代理或者客户拥有的本地资源的有效性。获取资源的更新日期时间,可通过确认首部字段 Last-Modified 来确定。
- If-Not-Match
和If-Match不同,该字段的作用是当请求资源的ETag和本字段指定的值不同时,才返回请求的资源。
在GET方法或者HEAD方法中,使用本字段可以帮助获取最新资源。这和If-Modified-Since的作用相似 。
- If-Range
该首部字段属于附带条件之一。它可以告知服务器如果 If-Range 字段值(ETag 值或者时间)和请求资源的 ETag 值或时间相一 致时,则作为范围请求处理。反之,则返回全体资源。
- If-Unmodified-Since
该首部字段用于告知服务器,若指定的资源在该字段指定的日期之后没有更新,则服务器处理请求,否则服务器返回412Precondition Failed 作为响应返回。