如果我想将值列表添加为HTTP标头,是否有标准方法可以执行此操作?我在RFC 822中找不到任何(我可以很容易理解的)。例如,是 逗号分隔值标准或分号分隔值。是否有标准?
示例:
Key: value1;value2;value3
答案 0 :(得分:79)
您需要查看HTTP规范RFC 2616,其中包含:
多个消息标题字段 可能存在相同的字段名称 当且仅当整个 该标题字段的字段值是 定义为以逗号分隔的列表 [即#(值)]。它必须是可能的 组合多个标题字段 成为一个“字段名称:字段值” 对,不改变语义 通过附加每个消息 后续的字段值到第一个, 每个用逗号分隔。命令 其中头字段具有相同的 因此,收到字段名称 重要的解释 组合字段值,因此a 代理不得改变顺序 消息的这些字段值 转发。
这意味着您可以在具有不同值的响应中多次发送相同的标头,只要这些值可以使用逗号相互附加。这也意味着您可以通过用逗号连接来在单个标头中发送多个值。
所以在你的情况下它将是:
Key: value1,value2,value3
答案 1 :(得分:5)
无论如何@ marc-novakowski你缩小了“问题”:)
通常(根据HTTP规范)我们使用逗号','
分隔其他值
但我们会研究一个简单的案例:
var text = "here come dat boi o shit waddup";
var exmaple = /[a-zA-Z0-9 ]/; // allowes a-zA-Z0-9 and whitespaces but nothing else right?
example.test(test); // would return true right?
text = "%coconut$§=";
example.test(text); // would return false right?
//I know this is very basic - I started learnig all this about week ago
如果用逗号分隔彼此的值,你如何加入这样的标题 - 可以出现昏迷的情况???
那么“客户”的责任是选择并决定策略,例如 drop,merg (如果merg如何)?
请注意Mozilla对 nsHttpHeaderArray的实现
在这种情况下,mozilla选择使用换行符分隔符'\ n'(对于某些标题字段名称)
当你面对这种情况时,我鼓励你们寻找共同的现有解决方案 - 因为他们提供了熟悉的方案
答案 2 :(得分:4)
但是,并非具有相同字段名称的所有值都可以组合到字段值列表中。例如,在RFC 7230我们可以阅读
注意:在实践中," Set-Cookie"标题字段([RFC6265])经常 在响应消息中多次出现并且不使用 列表语法,违反了多个标题的上述要求 具有相同名称的字段。既然它不能合并成一个 单个字段值,收件人应该处理" Set-Cookie"作为一个 处理标题字段时的特殊情况。 (见附录A.2.3 [Kri2001]详情。)