-3

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

示例:我想添加 2 个带有键 header1 的标题

name=header1
value=["value1","value2"]

生成的标题应该是

header1="value1"
header1="value2"

代替

header1="value1,value2"
4

2 回答 2

2

http.Header是字符串切片的映射切片元素表示由映射键命名的标头的不同值。

使用Header.Add为给定的标题添加多个值。

h.Add("Header1", "value1")
h.Add("Header1", "value2")

标头被写入网络,如下所示:

Header1: value1
Header1: value2

另一种方法是直接设置地图元素:

h["Header1"] = []string{"value1", "value2"}
于 2021-01-05T16:15:01.767 回答
1

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

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

Header1: value1
Header1: value2

在操场上看到它。

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

Header1: value1, value2
于 2021-01-05T14:23:54.893 回答