解释 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 淘汰)
在 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 淘汰)