如何在Go中从请求获取所有可用的HTTP标头作为数组?我只看到以下两种方法:
但是在这种情况下,我需要知道标题的名称,并且不能返回所有现有的标题。我想将http标头从一个请求复制到另一个请求。
正如您从文档中看到的,Header只是 amap[string][]string带有一些额外的辅助方法,因此您仍然可以像任何一样使用它map来访问其密钥:
for key,val := range req.Header {
// Logic using key
// And val if you need it
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您想一一循环所有标题,则可以使用上述方法。如果你想在一行中打印所有标题,你可以,
if reqHeadersBytes, err := json.Marshal(req.Header); err != nil {
log.Println("Could not Marshal Req Headers")
} else {
log.Println(string(reqHeadersBytes))
}
Run Code Online (Sandbox Code Playgroud)
使用Request.Header访问所有标头。由于标头是map [string] [] 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)
}
}
Run Code Online (Sandbox Code Playgroud)