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

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

但是我找不到一种方法来定制文档中的请求头,谢谢


当前回答

注意在http。请求头“主机”不能通过设置方法设置

req.Header。集(“主机”、“domain.tld”)

但可以直接设置:

要求的事情。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
}

注意在http。请求头“主机”不能通过设置方法设置

req.Header。集(“主机”、“domain.tld”)

但可以直接设置:

要求的事情。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)

Go的net/http包有许多处理头文件的函数。其中包括Add、Del、Get和Set方法。使用Set的方法是:

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

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

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