解释 HTTP/1.1 header 字段值时使用什么编码

What encoding to use when interpreting HTTP/1.1 header field value

在 HTTP/1.1 规范中,我在定义 headers:

时得到了这个

message-header = field-name ":" [ field-value ]

[...]

field-value = *( field-content | LWS )

field-contet = <the OCTETs making up the field-value and consisting of either *TEXT or combinations of token, separators, and quoted-string>

OCTET 和 TEXT 的定义是:

OCTET = <any 8-bit sequence of data>

TEXT = <any OCTET except CTLs, but including LWS> ; where CTL refers to control characters from US-ASCII charset.

问题: 现在,当谈到 header 名称(在定义中称为 field-names)时,使用的编码是 US-ASCII(在 HTTP/1.1 规范中指定),但是服务器应用程序如何知道对 header 值使用什么编码?

注意:我认为US-ASCII编码是正常的,但定义为不同情况留出了足够的空间。

非 ASCII 代码点的语义基本上是未定义的。避开它们。

收件人通常使用 ISO-8859-1 解码,这至少允许稍后恢复(因为它会保留所有八位字节)。

(另外:您看错了规范;RFC 2616 已被 RFC 7230 淘汰)