Http-Headers

Upgrade: 標頭可以在逗號之間有空格嗎?

  • April 17, 2021

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

引用自:https://serverfault.com/questions/1060678