由于可理解性高度依赖于单个用户,因此建议客户端应用程序允许用户可以选择语言首选项。如果选择不可用,则不能在请求中给出 Accept-Language头字段。
注意:当用户能够选择语言偏好时,我们希望提醒开发者,用户并不熟悉上述语言匹配的细节,并且应该提供适当的指导。举个例子,用户可能会假设在选择“en-gb”时,如果英式英语不可用,他们会得到任何类型的英语文档。在这种情况下,用户代理可能会建议使用“EN”以获得最佳匹配行为。
14.5 Accept-RangesAccept-Ranges响应头字段允许服务器表明其所接受资源的范围:
Accept-Ranges = "Accept-Ranges" ":" acceptable-ranges
acceptable-ranges = 1#range-unit | "none"
接受字节范围(byte-range)请求的源服务器可以发送
Accept-Ranges: bytes
但是我们并不需要这样做。客户端可以生成字节范围(byte-range)请求,而不为所涉及的资源接收此报头。范围单元(Range units)在3.12小节中做了说明。
如果发送了如下的字段,那么服务器不会接受任何范围的请求。
Accept-Ranges: none
建议客户端不要尝试范围请求。
14.6 AgeAge响应头字段传递发送方对该响应(或重新验证)在原始服务器上生成以来的时间的大致估计,如果缓存的响应的生命周期不超过新鲜度(fresh),那么它就是最新的。在小节中指定了如何去计算Age的值。
Age = "Age" ":" age-value
age-value = delta-seconds
Age的值是非负的十进制整数,表示时间(以秒为单位)。如果一个缓存接收到一个大于它所能表示的最大正整数的值,或者Age计算出的值溢出,那么它必须发送一个值为2147483648(2^31)的Age头字段。包含缓存的HTTP/1.1服务器必须在其自身缓存生成的每个响应中包含Age头字段。缓存应该使用至少31位的算术类型。
14.7 AllowAllow实体头字段列出了由请求URI(Request-URI)所标识的资源所支持的一组方法。此字段的目的是严格的告知接收方与该资源关联的有效方法。Allow字段必须在405(Method Not Allowed)响应中存在。
Allow = "Allow" ":" #Method
使用例子:
Allow: GET, HEAD, PUT
该字段无法阻止客户端尝试其他方法。
但是,我们应该遵循Allow头字段的值所给出的指示。被允许使用的方法的实际集合会在每一次请求的元服务器中明确的指定。
Allow头字段可以提供一个PUT方法以使用户提前知道一个新资源或者一个被修改的资源当前所支持的方法。服务器无需支持这些方法,但是需要在响应中包含一个Allow头字段告知用户该资源实际支持的方法有哪些。
一个代理不能修改Allow头字段中的内容既是它完全无法理解所有方法所具有的特性,因为可能我们的客户端在与服务器交流的时候有其他的用意。
14.8 Authorization用户代理希望通过服务器(通常是在收到401响应之后,但不一定是在收到401响应之后)进行身份验证,验证的方法是在请求中包含一个Authorization请求头字段。Authorization字段值由凭证(credentials)组成,凭证包含所请求资源范围的用户代理的身份验证信息。
Authorization = "Authorization" ":" credentials
该("HTTP Authentication:Basic and Digest Access Authentication")文章介绍了HTTP如何访问身份验证信息。如果某个请求通过了身份验证并指定了一个域,那么该域内的所有其他请求应该具有相同的凭证(假设身份验证方案本身不需要其他凭证,例如根据质询值变化的凭证或使用同步时钟)。
当共享缓存(参见第13.7节)接收到包含Authorization字段的请求时,它不能返回相应的响应作为对任何其他请求的回复,除非存在以下特定情况之一:
1.如果一个响应包含了“s-maxage”缓存控制(Cache-Control)指令,该缓存可以使用该响应回复之后的请求。但是(如果已经超过最大的指定期限)代理缓存必须优先与服务器进行验证,使用新请求的请求头来允许源服务器验证新请求。(这是s-maxage的定义行为。)如果响应包括“s-maxage=0”,则代理必须总是在重新使用之前对其进行重新验证。