在使用 Go语言 开发网络应用时,net/http 包是最核心的HTTP处理工具。很多时候我们需要在发送HTTP请求时添加自定义的请求头(Request Headers),比如用于身份验证、传递客户端信息或与API进行交互。本教程将手把手教你如何使用 net/http包 设置和发送带有自定义请求头的HTTP请求,即使是编程新手也能轻松掌握。
HTTP请求头是客户端(如浏览器或Go程序)在向服务器发送请求时附带的元数据。它们以键值对的形式存在,用于传递额外信息,例如:
User-Agent:标识客户端类型Authorization:用于身份验证(如Bearer Token)Content-Type:指定请求体的数据格式(如 application/json)X-Request-ID、X-API-Key 等)在Go中,我们通常通过 http.NewRequest() 创建一个请求对象,然后使用 req.Header.Set() 方法来添加自定义请求头。
package mainimport ( "fmt" "io" "net/http")func main() { // 创建一个新的GET请求 req, err := http.NewRequest("GET", "https://httpbin.org/headers", nil) if err != nil { panic(err) } // 设置自定义请求头 req.Header.Set("X-API-Key", "my-secret-api-key") req.Header.Set("User-Agent", "MyGoClient/1.0") // 创建HTTP客户端并发送请求 client := &http.Client{} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() // 读取响应内容 body, _ := io.ReadAll(resp.Body) fmt.Println(string(body))} 上面的代码向 https://httpbin.org/headers 发送了一个GET请求,并设置了两个自定义请求头:X-API-Key 和 User-Agent。该服务会返回你发送的所有请求头,方便调试。
如果你有多个请求头需要设置,也可以直接操作 req.Header 这个 map[string][]string 类型的字段:
// 批量设置请求头req.Header = http.Header{ "X-API-Key": []string{"my-secret-api-key"}, "User-Agent": []string{"MyGoClient/1.0"}, "Content-Type": []string{"application/json"}, "X-Custom-Tag": []string{"tutorial"},} 注意:每个头的值是一个字符串切片([]string),因为HTTP规范允许同一个头出现多次。
Authorization: Bearer <token> 传递访问令牌。Accept-Version: v2 指定API版本。X-Request-ID 便于日志追踪。x-api-key 会被转为 X-Api-Key)。Header.Set() 会覆盖已存在的同名头;若需追加值,请使用 Header.Add()。通过本教程,你应该已经掌握了如何在 Go语言 中使用 net/http包 来设置 自定义请求头。无论是简单的API调用还是复杂的微服务通信,合理使用 HTTP请求头设置 都能让你的程序更灵活、更安全。
现在就动手试试吧!你可以修改上面的示例代码,替换为你自己的API地址和请求头,观察服务器返回的结果。
提示:https://httpbin.org 是一个非常实用的测试HTTP请求的在线服务,推荐用于学习和调试。
本文由主机测评网于2025-12-23发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211777.html