HTTP

HTTP 知识量:10 - 42 - 186

6.5 响应首部字段><

Accept-Ranges- 6.5.1 -

首部字段Accept-Ranges是用来告知客户端服务器是否能处理范围请求,以指定获取服务器端某个部分的资源。

Accept-Ranges: bytes

可指定的字段值有两种,可处理范围请求时指定其为bytes,反之则指定其为none。

Age- 6.5.2 -

首部字段Age能告知客户端源服务器在多久前创建了响应。字段值的单位为秒。

Age: 600

若创建该响应的服务器是缓存服务器,Age值是指缓存后的响应再次发起认证到认证完成的时间值。代理创建响应时必须加上首部字段Age。

ETag- 6.5.3 -

首部字段ETag能告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。服务器会为每份资源分配对应的ETag值。

ETag: "82e22293907ce725faf67773957acd12"

当资源更新时,ETag值也需要更新。生成ETag值时,并没有统一的算法规则,而仅仅是由服务器来分配。

在下载过程中出现连接中断、再连接的情况,都会依照ETag值来指定资源。

ETag中有强ETag值和弱ETag值之分:

  • 强ETag值,不论实体发生多么细微的变化都会改变其值。

  • 弱ETag值只用于提示资源是否相同。只有资源发生了根本改变,产生差异时才会改变ETag值。这时,会在字段值最开始处附加W/。

Location- 6.5.4 -

使用首部字段Location可以将响应接收方引导至某个与请求URI位置不同的资源。该字段会配合3xx:Redirection的响应,提供重定向的URI。

Location: http://www.baidu.com

几乎所有的浏览器在接收到包含首部字段Location的响应后,都会强制性地尝试对已提示的重定向资源的访问。

Proxy-Authenticate- 6.5.5 -

首部字段Proxy-Authenticate会把由代理服务器所要求的认证信息发送给客户端。

Proxy-Authenticate: Basic realm="Usagidesign Auth"

它与客户端和服务器之间的HTTP访问认证的行为相似,不同之处在于其认证行为是在客户端与代理之间进行的。而客户端与服务器之间进行认证时,首部字段WWW-Authorization有着相同的作用。

Retry-After- 6.5.6 -

首部字段Retry-After告知客户端应该在多久之后再次发送请求。主要配合状态码503 Service Unavailable响应,或3xx Redirect响应一起使用。

Retry-After: 120

字段值可以指定为具体的日期时间(Wed, 06 Jul 2022 06:34:24 GMT等格式),也可以是创建响应后的秒数。

Server- 6.5.7 -

首部字段Server告知客户端当前服务器上安装的HTTP服务器应用程序的信息。不单单会标出服务器上的软件应用名称,还有可能包括版本号和安装时启用的可选项。

Server: Apache/2.2.6 (Unix) PHP/5.2.5

Vary- 6.5.8 -

首部字段Vary可对缓存进行控制。源服务器会向代理服务器传达关于本地缓存使用方法的命令。

Vary: Accept-Language

从代理服务器接收到源服务器返回包含Vary指定项的响应之后,若再要进行缓存,仅对请求中含有相同Vary指定首部字段的请求返回缓存。即使对相同资源发起请求,但如果Vary指定的首部字段不相同,仍必须要从源服务器重新获取资源。

WWW-Authenticate- 6.5.9 -

首部字段WWW-Authenticate用于HTTP访问认证。它会告知客户端适用于访问请求URI所指定资源的认证方案(Basic或是Digest)和带参数提示的质询(challenge)。状态码401 Unauthorized响应中,肯定带有首部字段WWW-Authenticate。

WWW-Authenticate: Basic realm="Usagidesign Auth"

以上代码中,realm字段的字符串是为了辨别请求URI指定资源所受到的保护策略。