Http-Headers
Upgrade: 標頭可以在逗號之間有空格嗎?
因此,我看到 Apache 預設顯示 Upgrade 標頭,如下所示:
Upgrade: h2,h2c
下面的標題是否也有效?:
Upgrade: h2, h2c
升級標頭中的逗號之間是否允許有空格?
資訊:
我談論的是響應 Upgrade: apache 通常發送的標頭。
定義 HTTP 標頭的 RFC 可能最好地回答這個問題:RFC 2616。
在第 4.2 節中,定義了標題的一般形式,寫到:
任何 LWS*$$ linear white space $$* 在解釋欄位值或向下游轉發消息之前,在欄位內容之間發生的事件可以用單個 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 中描述升級標頭的部分沒有提及任何進一步的限制。這就是為什麼我對您的問題的回答是:是的,值之間的空格應該是合法的。
$$ EDIT $$
抱歉引用了錯誤的 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