Come impostare le intestazioni in http ottenere richiesta?


152

Sto facendo un semplice GET http in Go:

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

Ma non riesco a trovare un modo per personalizzare l'intestazione della richiesta nel documento , grazie

Risposte:


233

Il Headercampo della richiesta è pubblico. Puoi farlo:

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

38

Prestare attenzione al fatto che nell'intestazione della richiesta http "Host" non è possibile impostare tramite il Setmetodo

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

ma può essere impostato direttamente:

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

Il pacchetto net / http di Go ha molte funzioni che si occupano delle intestazioni . Tra questi ci sono i metodi Add , Del , Get e Set . Il modo di usare Set è:

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

7
che tipo è w?
Eswar Yaganti,

@EswarYaganti come stai inviando le intestazioni? Ottieni un r *http.Requeste ritorna qualcosa dentro w http.ResponseWriter. Quindi probabilmente perché stai restituendo le intestazioni, devi scriverle in uno scrittore di risposta. Ed wè uno scrittore di risposta. Ti sembra logico?
Salvador Dali,

3
Il poster originale diceva che voleva "personalizzare l' intestazione della richiesta ". Il tuo esempio personalizza l' intestazione della risposta .
Martin Del Vecchio,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.