升级:标题中的逗号之间可以有空格吗?

升级:标题中的逗号之间可以有空格吗?

因此,我看到 Apache 默认显示如下升级标头:

Upgrade: h2,h2c

下面的标题也有效吗?:

Upgrade: h2, h2c

升级标头中的逗号之间是否允许有空格?

信息:

我说的是 apache 通常发送的响应升级:标头。

答案1

RFC 中定义 HTTP 标头可能可以最好地回答这个问题:RFC 2616

在第 4.2 节中,定义了标题的一般形式,内容如下:

任何 LWS[线性空白] 在解释字段值或将消息转发给下游之前,字段内容之间发生的事件可能会被单个 SP 替换。

标题格式如下:

   message-header = field-name ":" [ field-value ]
   field-name     = token
   field-value    = *( field-content | LWS )
   field-content  = <the OCTETs making up the field-value
                    and consisting of either *TEXT or combinations
                    of token, separators, and quoted-string>

请注意有关字段内容的部分。14.42 中描述升级标头的部分没有提到任何进一步的限制。这就是为什么我对您的问题的回答是:是的,值之间的空格应该是合法的。

[编辑]
抱歉,引用了错误的 RFC,正确的是RFC7231- 但我的答案仍然有效,请参阅附录 B。本节列出了与过时的 RFC 2616 相比的变化,但未列出标头格式的变化。

新的定义非常相似,见于RFC 7230,第 3.2 节:

 header-field   = field-name ":" OWS field-value OWS

 field-name     = token
 field-value    = *( field-content / obs-fold )
 field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
 field-vchar    = VCHAR / obs-text

 obs-fold       = CRLF 1*( SP / HTAB )
                ; obsolete line folding
                ; see Section 3.2.4

相关内容