1

我正在阅读 HTTP 1.1 RFC,但无法回答以下问题。

我们有这个标题:

Authorization: Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic

这引起了麻烦,因为 Rails 3 授权解析器由于“,”字符而错误地解码了字符串。我知道这很不常见,但我们使用这个 Apache httpd 配置添加它:

RequestHeader append Authorization "Basic" early

Apache mod_header 文档说:

响应标头附加到任何现有的同名标头。当新值合并到现有标题时,它与现有标题用逗号分隔。这是为标头提供多个值的 HTTP 标准方法。

但我认为这个 Authorization 标头不正确。RFC 定义不允许这样做。但有些标题允许逗号分隔的列表。我不确定这是否是所有 HTTP 标头的一般规则。

我正在HTTP 1.1 RFC 中寻找一个段落来证明我的想法这是不正确的。我已经发现了“这仅对可以分离的标题有效”的内容,但这不是证明。

当且仅当该头字段的整个字段值被定义为逗号分隔列表[即,#(values)] 时,具有相同字段名称的多个消息头字段可能出现在消息中。必须可以将多个头字段组合成一个“字段名称:字段值”对,而不改变消息的语义,方法是将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔。因此,接收具有相同字段名称的头字段的顺序对组合字段值的解释很重要,因此代理不能在转发消息时更改这些字段值的顺序。

这真的没有意义,但我正在寻找一个明确的证据。

4

1 回答 1

2

答案在您引用的文本中:

“当且仅当该标头字段的整个字段值被定义为逗号分隔列表 [即,#(values)] 时,具有相同字段名称的多个消息标题字段可能出现在消息中。”

这不是“授权”的情况。

于 2012-01-25T16:28:40.737 回答