因此,我看到 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