【发布时间】:2015-06-15 10:57:13
【问题描述】:
我正在解析 HTTP 标头。我想将标头值拆分为有意义的数组。
例如,Cache-Control: no-cache, no-store 应该返回 ['no-cache','no-store']。
HTTP RFC2616 说:
可能存在多个具有相同字段名的消息头字段 在消息中当且仅当该标头的整个字段值 字段被定义为逗号分隔的列表 [即,#(values)]。 必须 可以将多个标题字段合并为一个 “field-name: field-value”对,不改变语义 消息,通过将每个后续字段值附加到第一个,每个 用逗号分隔。 相同的头字段的顺序 因此,收到的字段名称对解释很重要 的组合字段值,因此代理不得更改 转发消息时这些字段值的顺序
但我不确定反过来是否正确——用逗号拆分是否安全?
我已经找到了一个导致问题的示例。例如,我的 User-Agent 字符串是
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
即,它在“KHTML”之后包含一个逗号。显然我没有多个用户代理,因此拆分此标头没有意义。
User-Agent 字符串是唯一的例外,还是还有更多?
【问题讨论】:
标签: http http-headers rfc2616