Как установить заголовки в запросе http get?

152

Я делаю простой http GET в Go:

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

Но я не могу найти способ настроить заголовок запроса в документе , спасибо

wong2
источник

Ответы:

233

HeaderПоле запроса является общедоступным. Вы можете сделать это:

req.Header.Set("name", "value")
Денис Сегюре
источник
38

Обратите внимание, что в http.Request заголовок «Хост» нельзя задать 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)
Олег Неумывакин
источник
2

Пакет go / net / http имеет много функций, которые работают с заголовками . Среди них есть методы Add , Del , Get и Set . Способ использования Set:

func yourHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("header_name", "header_value")
}
Сальвадор Дали
источник
7
какой тип ш?
Ишвар Яганти
@EswarYaganti, как ты отправляешь заголовки? Вы получаете r *http.Requestи возвращает что-то обратно w http.ResponseWriter. Поэтому, вероятно, поскольку вы возвращаете заголовки, вам нужно записать их в средство записи ответов. И wявляется автором ответа. Это выглядит логичным для вас?
Сальвадор Дали
3
Оригинальный плакат сказал, что он хочет "настроить заголовок запроса ". Ваш пример настраивает заголовок ответа .
Мартин Дель Веккио