带逗号的标头值

时间:2016-08-20 13:35:23

标签: http http-headers

根据HTTP规范,标题可以如下所示:

Header-Name=value1,value2,value3,...

我尝试解析标头值并将它们存储为数组:

array('value1', 'value2', 'value3')
到目前为止一切顺利。如果出现逗号,我可以将字符串标记为。

但是我应该如何处理这样的标题:

Expires=Thu, 01 Dec 1994 16:00:00 GMT

有一个逗号,但标题中有一个值。哦,我很容易想到这个规则:只有在逗号之前和之后有 no 空格时才用逗号分隔。这样两个示例都被解析正确。

但是然后我遇到了这样的标题:

Accept-Encding=gzip, deflate

现在?这是一个值array('gzip, deflate')还是两个值array('gzip', 'deflate')?对我来说,他们是两个独立的价值观,但我的上述规则不再适用。

是否有一个列表允许多次使用标题?所以我可以检查一个黑名单,以确定逗号是否意味着值分隔符?

1 个答案:

答案 0 :(得分:4)

任何标题字段都可以出现逗号连接,即使是那些没有为其设计的标题字段;它是图书馆和中介机构如何发挥作用的。

设计用于使用列表语法的标头字段(RFC 7230具有所有详细信息)。

最后,您不能使用通用代码进行标记,因为逗号在值内的发生方式因字段而异。