如何在Go中获取所有请求头

如何在Go中获取所有请求头,go,Go,如何在Go中以数组形式从请求中获取所有可用的http头?我只看到以下两种方法: 标题(名称字符串、值字符串) GetHeader(名称字符串) 但是在这种情况下,我需要知道头的名称,不能返回所有现有的头。我想将http头从一个请求复制到另一个请求。正如您可以从中看到的,头只是一个map[string][/string带有一些额外的辅助方法,因此您仍然可以像任何map一样使用它来访问其键: for key,val := range req.Header { // Logic using

如何在Go中以数组形式从请求中获取所有可用的http头?我只看到以下两种方法:

  • 标题(名称字符串、值字符串)
  • GetHeader(名称字符串)
但是在这种情况下,我需要知道头的名称,不能返回所有现有的头。我想将http头从一个请求复制到另一个请求。

正如您可以从中看到的,
只是一个
map[string][/string
带有一些额外的辅助方法,因此您仍然可以像任何
map
一样使用它来访问其键:

for key,val := range req.Header {
    // Logic using key
    // And val if you need it
}
用于访问所有标题。因为Header是map[string][]字符串,所以需要两个循环来访问所有Header

// 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)
    }
}

如果您想逐个循环遍历所有标头,可以使用上述方法。如果要在一行中打印所有标题,可以

if reqHeadersBytes, err := json.Marshal(req.Header); err != nil {
    log.Println("Could not Marshal Req Headers")
} else {
    log.Println(string(reqHeadersBytes))
}

谢谢你的时间和解释。我现在明白了。你的建议就是解决办法。