Wie setze ich Header in http get request?

152

Ich mache ein einfaches http GET in Go:

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

Aber ich kann keine Möglichkeit finden, den Anforderungsheader im Dokument anzupassen , danke

wong2
quelle

Antworten:

233

Das HeaderFeld der Anfrage ist öffentlich. Sie können dies tun:

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

Beachten Sie, dass im http.Request-Header "Host" nicht über die SetMethode gesetzt werden kann

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

kann aber direkt eingestellt werden:

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
quelle
2

Das net / http-Paket von Go verfügt über viele Funktionen, die sich mit Headern befassen . Darunter befinden sich die Methoden Add , Del , Get und Set . Die Verwendung von Set ist:

func yourHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("header_name", "header_value")
}
Salvador Dali
quelle
7
Welcher Typ ist w?
Eswar Yaganti
@EswarYaganti Wie senden Sie die Header? Sie erhalten eine r *http.Requestund gibt etwas zurück w http.ResponseWriter. Wahrscheinlich, weil Sie Header zurückgeben, müssen Sie sie in einen Antwortschreiber schreiben. Und wist ein Antwortschreiber. Sieht das für Sie logisch aus?
Salvador Dali
3
Auf dem Originalplakat stand, dass er "den Anforderungsheader anpassen" möchte . Ihr Beispiel passt die Antwort - Header.
Martin Del Vecchio