在 Go 中迭代 HTTP 客户端响应头

在此示例中,我们迭代服务器在使用 net/http Go 库发出 HTTP 请求后发回的所有 HTTP 头。

iterate_headers_snippet.go
for name, headers := range resp.Header {
    // 迭代具有一个名称的所有头(例如 Content-Type)
    for _, hdr := range headers {
        println(name + ": " + hdr)
    }
}

完整示例:

iterate_headers_example.go
package main

import (
    "net/http"
)

func main() {
    // 执行请求
    resp, err := http.Get("https://ipv4.techoverflow.net/api/get-my-ip")
    if err != nil {
        print(err)
        return
    }
    // 此函数结束时清理
    defer resp.Body.Close()
    // 读取所有头
    for name, headers := range resp.Header {
        // 迭代具有一个名称的所有头(例如 Content-Type)
        for _, hdr := range headers {
            println(name + ": " + hdr)
        }
    }
}

此示例将打印,例如:

headers_example.txt
Content-Type: application/octet-stream
Content-Type: text/plain charset=UTF-8
Content-Length: 11
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS
Server: nginx/1.14.0 (Ubuntu)
Date: Sat, 16 Nov 2019 00:27:05 GMT

Check out similar posts by category: Go