Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何添加包含不同值的同名多个标题_Go_Http Headers - Fatal编程技术网

Go 如何添加包含不同值的同名多个标题

Go 如何添加包含不同值的同名多个标题,go,http-headers,Go,Http Headers,我的Go应用程序正在尝试修改(添加/删除)传入的请求/响应头。我想添加多个具有相同名称和不同值的标题。但是,我不明白这是怎么可能的,因为来自请求/响应对象的http头对象是一个映射,因此不允许重复密钥。有没有办法做到这一点 示例:我想用键header1添加两个标题 name=header1 value=["value1","value2"] 生成的标题应为 header1="value1" header1="value2&q

我的Go应用程序正在尝试修改(添加/删除)传入的请求/响应头。我想添加多个具有相同名称和不同值的标题。但是,我不明白这是怎么可能的,因为来自请求/响应对象的http头对象是一个映射,因此不允许重复密钥。有没有办法做到这一点

示例:我想用键header1添加两个标题

name=header1
value=["value1","value2"]
生成的标题应为

header1="value1"
header1="value2"
而不是

header1="value1,value2"

根据您的问题,您想要什么还不完全清楚,因为您声称想要的输出根本不是有效的标题

但我可以告诉您的是,使用标准的
net/http
包,您的输出将是:

Header1: value1
Header1: value2
看到了

请注意,根据HTTP规范,这完全等同于:

Header1: value1, value2
一个是字符串切片的映射。切片元素表示由映射键命名的头的不同值

用于为给定标题添加多个值

h.Add("Header1", "value1")
h.Add("Header1", "value2")
报头以如下方式写入网络:

Header1: value1
Header1: value2
另一种方法是直接设置贴图元素:

h["Header1"] = []string{"value1", "value2"}

你不能那样做。如果可能的话,HTTP要求合并头。另外:这是不必要的,因为两个变体具有相同的含义。同意这两个变体具有相同的含义,但是如果服务器希望它们作为单独的头呢?如果有一个作为中介的软件需要作为两个单独的头发送到后端服务器,该怎么办。当然,我们可以争论它的有用性,但在现实世界中,事情有时确实会变得奇怪。我的要求是,在将传入的请求发送到后端之前,我需要修改它。因此,我不能像您在示例中使用的那样使用http编写器,它可以提供所需格式的输出。是否有方法修改请求头以实现添加具有相同密钥的多个头?默认行为是添加具有相同密钥的多个头。我不明白你在问什么。@Hasmita你在问如何将逗号分隔的标题转换为多个标题?非常感谢@thwd。你的回答很有用。