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