Comment définir les en-têtes dans http get request?


152

Je fais un simple http GET dans Go:

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

Mais je ne trouve pas de moyen de personnaliser l'en-tête de la demande dans le document , merci

Réponses:


233

Le Headerchamp de la demande est public. Vous pouvez faire ceci:

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

38

Faites attention que dans l'en-tête http.Request "Host" ne peut pas être défini via la Setméthode

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

mais peut être réglé directement:

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

Le package net / http de Go a de nombreuses fonctions qui traitent les en-têtes . Parmi elles, on trouve les méthodes Add , Del , Get et Set . La façon d'utiliser Set est:

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

7
quel type est w?
Eswar Yaganti

@EswarYaganti comment envoyez-vous les en-têtes? Vous obtenez un r *http.Requestet retournez quelque chose w http.ResponseWriter. Donc, probablement parce que vous renvoyez des en-têtes, vous devez les écrire dans un rédacteur de réponse. Et west un écrivain de réponse. Cela vous semble-t-il logique?
Salvador Dali

3
L'affiche originale a dit qu'il voulait "personnaliser l'en- tête de la demande ". Votre exemple personnalise l'en- tête de la réponse .
Martin Del Vecchio
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.