当前位置: 首页 > 知识库问答 >
问题:

将单个HTTP Header的多个值添加到请求或响应的标准

韦晟睿
2023-03-14

如果我想添加一个值列表作为HTTP头,有没有标准的方法?我在RFC 822中找不到任何东西(我很容易理解)。例如,是逗号分隔值标准值还是分号分隔值。有没有标准?

示例:

Key: value1;value2;value3

共有3个答案

杜河
2023-03-14

但是,并非所有具有相同字段名的值都可以组合到字段值列表中。例如,在RFC 7230中,我们可以阅读

注意:在实践中,“Set Cookie”头字段([RFC6265])经常在响应消息中多次出现,并且不使用列表语法,违反了上述对同名多个头字段的要求。由于不能将其合并到单个字段值中,收件人在处理标题字段时应将“Set Cookie”作为特例处理。(详见[2001]附录A.2.3。)

山高峰
2023-03-14

无论如何,@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   

当一个值与另一个值用逗号分隔时,如何加入这样的标题???

那么客户的责任是选择和决定策略,例如下降,合并(如果合并如何)?

请看看nsHttpHeaderArray的Mozilla实现

https://github.com/bnoordhuis/mozilla-central/blob/master/netwerk/protocol/http/nsHttpHeaderArray.h#L185

我鼓励当你面对这样的情况搜索共同现有的解决方案因为他们提供熟悉的方案

标志说明:

Cookie不是HTTP标准的一部分。Cookie在自己的RFC 6265(正式为2965和2109)中定义。甚至HTTP 2 RFC也只提到cookies,但没有将其定义为标准的一部分@麦基8月25日18:56

请再看一遍句子:

根据HTTP规范,我们使用逗号分隔每个值 ',' - 这里没有单词cookie:)

也许我们需要在这里精确地讨论标题字段(当重复它们时)“Cookie set”是一个标题字段,它有值。。那些我们认为是“cookie /s”的值——因此客户机/服务器实现应该处理这样的“cookie/s”。

查看值或名称对:)在HTTP 1/1规格

https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.2.

班玉堂
2023-03-14

您将想看看HTTP规范RFC 2616,其中说明:

当且仅当消息头字段的整个字段值定义为逗号分隔列表[即#(值)]时,消息中可能存在具有相同字段名的多个消息头字段。必须能够将多个标题字段合并为一个“字段名称:字段值”对,而不改变消息的语义,方法是将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔。因此,具有相同字段名的标题字段的接收顺序对于组合字段值的解释非常重要,因此,在转发消息时,代理不得更改这些字段值的顺序。

这意味着您可以在具有不同值的响应中多次发送相同的标头,只要这些值可以使用逗号相互追加。这也意味着您可以通过用逗号连接多个值来在单个标头中发送多个值。

所以在你的情况下,它将是:

Key: value1,value2,value3
 类似资料:
  • 问题内容: 每当我对应用程序中的其余控制器发出请求以允许跨源资源共享时,我想将此标头添加到对客户端的每个响应中,目前我正在手动添加每个这样的方法的标头 它的工作,但非常令人沮丧。我在Spring文档中找到了webContentInterceptor,它允许我们修改每个响应的标头 但是当我使用它时,它会引发错误,即找不到名称为Access-Control-Allow-Origin的属性,因此还有其他

  • Im正在尝试返回目录中的文件列表。有谁能帮忙吗?

  • *netty版本:4.0* 你好。我计划使用netty编写一个客户端来处理二进制协议。 该协议相当简单,支持多种类型的请求/响应。通常一个请求被启动,它包含一个字节,通知它是什么类型的请求(对于服务器端),但响应不包含任何信息。它假定客户端正在等待该特定响应。 最初,我的想法是构建一组编码器/解码器,并使用通道双工处理程序对它们进行分组。 我只是想知道最好的方法是拥有几种类型的管道(每个请求/响应

  • 我有两件事情要做:在鼠标悬停时突出显示JPanel,在鼠标拖动时移动一个蓝色方块。问题是,这需要我将MouseListeners添加到不同的组件中。当我这样做时,我只能使用一个功能——另一个被阻止了。我该怎么做才能让两个功能都工作? 注意:有时候JFrame不会显示任何东西——你只需要一直运行它,直到它显示为止(通常需要2-3次尝试)。如果它做了任何其他奇怪的事情,就继续运行它,直到它工作。如果之

  • 问题内容: 之前我使用模块在请求中添加标头。现在,我正在对该模块尝试相同的操作。 这是我正在使用的python请求模块:http : //pypi.python.org/pypi/requests 如何向和添加标头。说我必须在标题的每个请求中添加密钥。 问题答案: 从http://docs.python- requests.org/en/latest/user/quickstart/ 您只需要用标

  • 问题内容: 我在Java中有这样的双重经历。 现在,我想做的是通过循环在列表的零索引中添加5个值,在索引1中添加5个值。 第零个索引将具有值 索引1将具有值 并且所有这些值都按以下顺序存储在双精度数组中 我该怎么做? 问题答案: @Ahamed有一点,但是如果您坚持使用列表,那么可以有三个这样的arraylist: 编辑: 如果您在下面的列表中有这些值: 你想做的就是把它们结合起来,对吗?您可以尝