如何在http get请求中设置标题?


152

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

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

但是我找不到在doc中自定义请求标头的方法,谢谢

Answers:



38

请注意,无法通过Set方法设置http.Request标头中的“主机”

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)

2

Go的net / http包具有许多处理标头的功能。其中包括AddDelGetSet方法。使用Set的方法是:

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

7
w是什么类型?
Eswar Yaganti

@EswarYaganti您如何发送标题?您得到,r *http.Request然后返回中的某项 w http.ResponseWriter。可能是因为您正在返回标头,所以需要在响应编写器中编写它们。并且w是一位回应作家。您觉得这合乎逻辑吗?
萨尔瓦多·达利

3
原始张贴者说他想“自定义请求标头”。您的示例自定义响应标头。
Martin Del Vecchio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.