我可以用逗号分隔所有HTTP标头吗?甚至授权?

时间:2012-01-25 15:23:12

标签: http apache rfc rfc2616

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

我们有这个标题:

Authorization: Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic

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

RequestHeader append Authorization "Basic" early

Apache mod_header documentation说:

  

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

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

正在寻找HTTP 1.1 RFC 中的段落,这证明了我的想法是不正确的。我已经找到了一些说法“这只适用于可以分离的标题”,但这不是证据。

  

可能存在具有相同字段名称的多个消息头字段   在消息中,当且仅当该标头的整个字段值   字段被定义为以逗号分隔的列表[即,#(值)]。它必须   可以将多个标题字段合并为一个   “field-name:field-value”对,不改变语义   消息,通过将每个后续字段值附加到第一个,每个   用逗号分隔。头字段具有相同的顺序   因此,接收字段名称对于解释是重要的   组合字段值,因此代理不得改变   转发邮件时这些字段值的顺序。

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

1 个答案:

答案 0 :(得分:2)

答案在你引用的文字中:

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

“授权”不是这种情况。