我在Go中做了一个简单的http GET:
client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
res, _ := client.Do(req)
但我找不到在doc中自定义请求标头的方法,谢谢
答案 0 :(得分:167)
请求的Header
字段是公开的。你可以这样做:
req.Header.Set("name", "value")
答案 1 :(得分:14)
请注意http.Request标题" Host"无法通过Set
方法设置
req.Header.Set("Host", "domain.tld")
但可以直接设置:
req.Host = "domain.tld"
:
req, err := http.NewRequest("GET", "http://10.0.0.1/", nil)
if err != nil {
...
}
req.Host = "domain.tld"
resp, err := http.Client.Do(req)
答案 2 :(得分:0)
Go的net / http包有很多functions that deal with headers。其中包括Add,Del,Get和Set方法。使用Set的方法是:
func yourHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("header_name", "header_value")
}
答案 3 :(得分:0)
如果您想设置多个标题,这比编写 set 语句更方便。
client := http.Client{}
req , err := http.NewRequest("GET", url, nil)
if err != nil {
//Handle Error
}
req.Header = http.Header{
"Host": []string{"www.host.com"},
"Content-Type": []string{"application/json"},
"Authorization": []string{"Bearer Token"},
}
res , err := client.Do(req)
if err != nil {
//Handle Error
}
答案 4 :(得分:-1)
w.Header().Set("k", "v"))
应在
之前调用w.WriteHeader(statusCode)