如何从Go中的数组中获取请求中的所有可用http标头?我只看到以下两种方法:
但在这种情况下,我需要知道Header的名称,并且无法返回所有现有的标头。我想将http标头从一个请求复制到另一个请求。
答案 0 :(得分:2)
从the documentation可以看出,Header
只是一个map[string][]string
,其中包含一些额外的辅助方法,因此您仍然可以像使用任何map
一样使用它来访问其密钥:
for key,val := range req.Header {
// Logic using key
// And val if you need it
}
答案 1 :(得分:1)
使用Request.Header访问所有标头。因为Header是map [string] []字符串,所以需要两个循环才能访问所有标题。
// Loop over header names
for name, values := range r.Header {
// Loop over all values for the name.
for _, value := range values {
fmt.Println(name, value)
}
}
答案 2 :(得分:0)
如果要在所有标头中一一循环,则可以使用上述方法。如果要在一行中打印所有标题,
if reqHeadersBytes, err := json.Marshal(req.Header); err != nil {
log.Println("Could not Marshal Req Headers")
} else {
log.Println(string(reqHeadersBytes))
}