该头字段可用于日志记录,并可用于标识无效或不想要请求的资源。它不应该用作不安全的访问保护形式。该字段的解释是,请求是代表指定的人所发出的,该人对执行方法负有责任。特别是,机器人代理应该包括这个头,以便在接收端出现问题时可以联系负责运行机器人的人。
此字段中的Internet电子邮件地址可能与发出请求的Internet主机分开。例如,当请求通过代理传递时,应该使用原始发布者的地址。
客户端不应该在未经用户批准的情况下发送From头字段,因为这可能会与用户的隐私利益或其站点的安全策略发生冲突。强烈建议用户能够在请求之前的任何时候禁用、启用和修改此字段的值。
14.23 HostHost 请求头字段指定了从用户给出的原始URI或引用资源(通常是HTTP URL,如节所述)中所获得的被请求资源的网络主机和端口号。HOST字段值必须代表原始URL给出的源服务器或网关的命名权限。这允许原始服务器或网关区分内部模糊的(内部歧义)URL,例如,用于单个IP地址上的多个主机名的服务器URL的根名称“/”。
Host = "Host" ":" host [ ":" port ] ; Section 3.2.2
如果一个host尾部并没有跟随端口号信息,那么就是默认的端口号(比如,HTTP URl的默认端口号是80)。举个例子。向“”所发出的请求会包含以下信息:
GET /pub/WWW/ HTTP/1.1
Host:
在HTTP/1.1的客户端请求信息中必须包含HOST头字段。如果所请求的URI不包括所请求服务的Internet主机名,则必须给Host头字段一个空值。HTTP/1.1代理必须确保它转发的任何请求信息中都包含适当的HOST头字段,该字段标识代理请求的服务。所有基于HTTP/1.1的互联网请求的服务器必须对任何缺少主机头字段的HTTP/1.1请求消息使用400(Bad Request)状态码进行响应。
有关HOST字段的其他要求见第和 节。
14.24 If-MatchIf-Match请求头字段需要与一个使其成为“条件”的方法一起使用。拥有一个或多个之前从资源中获得的实体的客户端可以通过在If-Match头字段中包含相关实体标记的列表来验证这些实体中的一个是否是当前匹配的。实体标记在 节中有详细说明。这个特性的目的是允许以最少的开销,高效地更新缓存的信息。在更新请求时,它还用于防止无意中修改错误版本的资源。作为一种特殊情况,“*”值匹配资源的任何当前实体。
If-Match = "If-Match" ":" ( "*" | 1#entity-tag )
如果任何实体标记与在响应该资源上的类似GET请求(没有if-Match头字段)时返回的实体的实体标记相匹配,或者如果“*”值在IF-Matc中被给出并且任何当前的实体都存在该资源中,则服务器可以执行所请求的方法就像if-Match头字段不存在一样。
服务器必须使用强比较函数(参见第 节)来比较If-Match中的实体标签。
如果没有匹配的实体标记,或者给定了“*”值,且不存在当前实体,服务器就不能执行请求的方法,必须返回412(Precondition Failed)响应。当客户端希望阻止一个更新类型的方法(如PUT)修改自客户端上次检索后已更改的资源时,这种行为最有用。
如果请求在没有if-Match头字段的情况下会导致除了2xx或412状态之外的任何结果,则必须忽略if-Match头字段。
“if-Match:*”的含义是,如果源服务器(或缓存,可能使用变体机制,请参见节)选择的内容存在,则应该执行该方法,如果内容不存在,则必须不执行该方法。
更新资源(例如PUT)的请求可能包含if-match头字段,以表示如果与if-match值(单个实体标记)对应的实体不再是该资源的表示,则不得应用请求方法。这允许用户表示,如果资源在他们不知情的情况下被更改,他们不希望请求成功。
例如:
If-Match: "xyzzy"
If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
If-Match: *
一个请求中是否可以同时存在If-Match字段和If-None-Match或If-Modified-Since头字段在本规范中并未定义。
14.25 If-Modified-SinceIf-Modified-Since请求头字段需要与一个使其成为“条件”的方法一起使用:如果请求变量在该字段给出的时间范围内没有被修改,那么服务器则不能返回实体内容。替代的,一个没有任何信息体的304(Not Modified)响应会被返回。
If-Modified-Since = "If-Modified-Since" ":" HTTP-date
下面是该字段的一个例子:
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT