如何在http获取请求设置报头?

我在Go中做一个简单的http GET:

client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
res, _ := client.Do(req)

但是我找不到自定义医生中的请求头的方法,谢谢

246991 次浏览

Request的Header字段是公共的。你可以这样做:

req.Header.Set("name", "value")

Go的net/http包有许多处理头文件的函数. conf。其中包括添加得到方法。使用Set的方法是:

func yourHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("header_name", "header_value")
}

注意在http。请求头“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"
client := &http.Client{}
resp, err := client.Do(req)

如果您想设置多个头文件,这比编写set语句更方便。

client := http.Client{}
req , err := http.NewRequest("GET", url, nil)
if err != nil {
//Handle Error
}


req.Header = http.Header{
"Host": {"www.host.com"},
"Content-Type": {"application/json"},
"Authorization": {"Bearer Token"},
}


res , err := client.Do(req)
if err != nil {
//Handle Error
}