带逗号的标题值

TiM*_*TER 5 http http-headers

根据 HTTP 规范,标头可能如下所示:

Header-Name=value1,value2,value3,...
Run Code Online (Sandbox Code Playgroud)

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

array('value1', 'value2', 'value3')
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。如果出现逗号,我可以只标记字符串。

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

Expires=Thu, 01 Dec 1994 16:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

有一个逗号,但在标题具有的一个值中。哦,这很容易,我想并找出了规则:只有在逗号前后没有空格时才用逗号分隔。这样,两个示例都可以正确解析。

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

Accept-Encding=gzip, deflate
Run Code Online (Sandbox Code Playgroud)

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

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

Jul*_*hke 6

任何标头字段都可能发生逗号连接,即使是那些不是为它设计的;这就是图书馆和中介机构的运作方式。

旨在用于使用列表语法的标头字段(RFC 7230 包含所有详细信息)。

最后,您不能使用通用代码来标记化,因为逗号在值中出现的方式因字段而异。