在 rfc7230 中遇到“应该”应该如何解释?

Posted

技术标签:

【中文标题】在 rfc7230 中遇到“应该”应该如何解释?【英文标题】:How should "ought" be interpreted as when encountered within rfc7230? 【发布时间】:2019-10-16 18:19:51 【问题描述】:

RFC 7230 (HTTP/1.1 消息语法和路由) 指定“must”、“shall”、“should”和“may”将按照 RFC 2119 中的说明进行解释。但是除了这些需求说明符之外,RFC 7230 似乎还在文档中的 23 个不同位置使用“ought”作为需求说明符。

我最初认为“应该”等同于“应该”,但在某些情况下将其解释为“应该”可能更有意义。我发现的词定义支持这两种用法。

所以我的问题如下:在 rfc7230(及其兄弟姐妹)中遇到“应该”时应该如何解释?

【问题讨论】:

【参考方案1】:

来自HTTP persistent connection:

根据 RFC 7230 第 6.4 节,“客户端应该限制它与给定服务器保持的同时打开连接的数量”。以前版本的 HTTP/1.1 规范规定了特定的最大值,但用 RFC 7230 的话来说“这对许多应用程序来说是不切实际的……相反……在打开多个连接时要保守”。

这里的“应该”有两种含义:以前的“应该”,现在放松为“应该”。也就是说,绝对不是“应该”。

在this answer 中也有人强烈认为“应该”是“应该”,

请注意这里的弱“应该”,它与 MUST 相去甚远。但至少 net/http 是完全正确的,因为这种响应是错误的,可以作为错误处理。但不要求视为错误。

在What's difference between HTTP 301 and 308 status codes? 中的所有示例中,我认为很明显“应该”意味着“应该”,不是“应该”。

最后,从简单的词用法的角度来看,“应该”不是一个常见或自然的词选择——没有人会随意使用它——这个词只在作者不能 em> 承诺“应该”。

所以在这一点上,我想说,如果您确定“应该”应该是“应该”,那么它更有可能是文档中的错误,或者更接近于我的第一个示例在历史上是一个“应该”。

无论如何,最好向专家具体询问您关心的条款。

【讨论】:

以上是关于在 rfc7230 中遇到“应该”应该如何解释?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 两次 DELETE 同一个资源应该返回什么

The valid characters are defined in RFC 7230 and RFC 3986报错处理

The valid characters are defined in RFC 7230 and RFC 3986报错处理

The valid characters are defined in RFC 7230 and RFC 3986

tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法

The valid characters are defined in RFC 7230 and RFC 3986