¿Cómo configurar encabezados en http get request?


152

Estoy haciendo un simple http GET en Go:

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

Pero no puedo encontrar una manera de personalizar el encabezado de la solicitud en el documento , gracias

Respuestas:


233

El Headercampo de la solicitud es público. Puedes hacer esto:

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

38

Tenga en cuenta que en http.Request el encabezado "Host" no se puede configurar a través del Setmétodo

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

pero se puede configurar directamente:

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

El paquete net / http de Go tiene muchas funciones que tratan con encabezados . Entre ellos se encuentran los métodos Add , Del , Get y Set . La forma de usar Set es:

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

77
¿De qué tipo es w?
Eswar Yaganti

@EswarYaganti, ¿cómo envías los encabezados? Obtienes un r *http.Requesty devuelve algo adentro w http.ResponseWriter. Entonces, probablemente porque está devolviendo encabezados, debe escribirlos en un escritor de respuestas. Y wes un escritor de respuestas. ¿Te parece lógico?
Salvador Dali

3
El póster original decía que quiere "personalizar el encabezado de la solicitud ". Su ejemplo personaliza el encabezado de respuesta .
Martin Del Vecchio
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.