Como definir cabeçalhos em http get request?

152

Estou fazendo um simples http GET no Go:

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

Mas não encontrei uma maneira de personalizar o cabeçalho da solicitação no documento , obrigado

wong2
fonte

Respostas:

233

O Headercampo da solicitação é público. Você pode fazer isso:

req.Header.Set("name", "value")
Denys Séguret
fonte
38

Preste atenção que no cabeçalho http.Request "Host" não pode ser definido através do Setmétodo

req.Header.Set("Host", "domain.tld")

mas pode ser definido diretamente:

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)
Oleg Neumyvakin
fonte
2

O pacote net / http do Go tem muitas funções que lidam com cabeçalhos . Entre eles estão os métodos Add , Del , Get e Set . A maneira de usar o Set é:

func yourHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("header_name", "header_value")
}
Salvador Dalí
fonte
7
que tipo é w?
Eswar Yaganti
@EswarYaganti como você está enviando os cabeçalhos? Você recebe um r *http.Requeste retorna algo w http.ResponseWriter. Portanto, provavelmente porque você está retornando cabeçalhos, é necessário escrevê-los em um escritor de respostas. E wé um escritor de respostas. Isso parece lógico para você?
Salvador Dali
3
O pôster original disse que ele deseja "personalizar o cabeçalho da solicitação ". Seu exemplo personaliza o cabeçalho da resposta .
Martin Del Vecchio