本规范根据参与者在HTTP通信中的角色来确定一致性标准。因此HTTP要求被用于发件人、收件人、客户端、服务器、用户代理、中介、源服务器、代理、网关或者缓存,具体取决于需求限制的行为。其他(社交)要求放在实施,资源所有者和协议元素注册上,当它们超出单一通信的范围时。

使用动词“生成”代替“发送”,用于区分创建协议元素而不是仅向下游转发收到的元素。

如果一个实现符合与它在HTTP中所涉及的角色相关的所有要求,则认为它是一致的。

一致性包括句法和协议元素的语义。发送者不得生成协议元素,以传达发送者已知的含义为假。发送者不能生成与相应的ABNF规则定义的语法不匹配的协议元素。在给定的消息中,发送者不能生成只允许由其他角色的参与者(即,发送者不具有该消息的角色)生成的协议元素或语法选择。

当接收到的协议元素被解析时,接收者必须能够解析适用于接收者角色的合理长度的任何值,并且匹配由相应的ABNF规则定义的语法。 但请注意,某些收到的协议元素可能不会被解析。 例如,转发消息的中介可能会将头字段解析为通用的字段名称和字段值组件,然后转发头字段而无需在字段值内进一步解析。

对于许多协议元素,HTTP没有特定的长度限制,因为根据实现的部署上下文和目的,可能适当的长度会有很大差异。 因此,发送者和接收者之间的互操作性取决于对每个协议元素的合理长度的共同期望。 此外,在过去二十年的HTTP使用过程中,通常理解为某些协议元素的合理长度已经发生了变化,并且预计在将来会继续变化。

至少,接收者必须能够解析和处理协议元素的长度,这个长度至少与它为其他消息中的相同协议元素生成的值一样长。 例如,发布非常长的URI引用到自己的资源的原始服务器需要能够解析和处理这些相同的引用作为请求目标接收。

接收者必须根据本规范为其定义的语义(包括本规范的扩展)解释接收到的协议元素,除非接收者已经确定(通过经验或配置)发送者错误地实现了这些语义隐含的东西。 例如,如果对User-Agent报头字段的检查指示在收到特定内容编码时已知会失败的特定实现版本,则源服务器可能忽略所接收的Accept-Encoding报头字段的内容。

除非另外指出,接收者可以尝试从无效构造中恢复可用的协议元素。 HTTP不会定义特定的错误处理机制,除非它们对安全性有直接影响,因为协议的不同应用程序需要不同的错误处理策略。 例如,Web浏览器可能希望透明地从位置标题字段不根据ABNF解析的响应中恢复,而系统控制客户端可能认为任何形式的错误恢复都是危险的。

results matching ""

    No results matching ""