将单个HTTP标头的多个值添加到请求或响应的标准
如果我想添加一个值的列表作为一个HTTP头,是否有一个标准的方法来做到这一点? 在RFC 822中找不到任何东西(我可以很容易理解)。例如,逗号分隔值是标准的或分号分隔的值。 有没有标准?
例:
Key: value1;value2;value3
你会想看看HTTP规范RFC 2616 ,它说:
当且仅当该报头字段的整个字段值被定义为以逗号分隔的列表[即#(值)]时,具有相同字段名的多个消息报头字段可以存在于消息中。 必须将多个头域组合成一个“field-name:field-value”对,而不改变消息的语义,把每个后续的域值附加到第一个域中,每个域都用逗号分隔。 因此,接收具有相同字段名的头部字段的顺序对于组合字段值的解释是重要的,因此当消息被转发时,代理务必不改变这些字段值的顺序。
这意味着你可以在不同值的响应中多次发送相同的头文件,只要这些值可以用逗号相互附加。 这也意味着您可以通过将它们与逗号连接在一个头中发送多个值。
所以你的情况是这样的:
Key: value1,value2,value3
通过一切手段@ marc-novakowski你缩小了“问题”:)
通常(根据HTTP规范)我们使用逗号分隔每个值,'''
但我们将检查一个简单的情况:
Cookie-set: language=pl; expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com Cookie-set: id=123 expires=Sat, 15-Jul-2017 23:58:22 GMT; path=/; domain=x.com; httponly
如何join这样的标题,当一个从另一个值是用逗号分隔 – 情况下,当昏迷可以出现?
那么“客户”的责任就是select和决定策略,例如drop,merg (如果merg如何)?
请认真看看Mozilla实现的nsHttpHeaderArray
在这种情况下,mozillaselect使用换行符“\ n” (对于某些头字段名称)
我鼓励当你遇到这样的情况,寻求共同的现有解决scheme – 因为他们提供熟悉的scheme
但是,不是所有具有相同字段名称的值都可以组合到字段值列表中。 例如,在RFC 7230中,我们可以阅读
注意:在实际中,“Set-Cookie”头字段([RFC6265])经常出现在响应消息中多次,并且不使用列表语法,违反了多个具有相同名称的头部字段的上述要求。 由于它不能被合并成一个单一的字段值,接收者在处理头部字段时应该把“Set-Cookie”作为一个特殊情况来处理。 (详见[Kri2001]的附录A.2.3)