¿Cómo puedo configurar el encabezado de solicitud para curl?


197

¿Cómo pasaría varios valores en el encabezado de una curlsolicitud?


¿Tienes un ejemplo que estás usando ahora que podrías mostrarnos?
— Ryan Bigg

44
Añadir múltiples -H bandera. Por ejemplocurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
— gsumk

Respuestas:


242

Simplemente use el -Hparámetro varias veces:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com

¿Qué pasa si el encabezado contiene "?
— Freewind

2
@Freewind ajusta el valor con una comilla simple en lugar de una doble, o escapa de él. Lo mismo que siempre haces en ese caso.
— Darth Egregious

47

A veces, cambiar el encabezado no es suficiente, algunos sitios también verifican el árbitro:

curl -v \
     -H 'Host: restapi.some-site.com' \
     -H 'Connection: keep-alive' \
     -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
     -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' \
     -e localhost \
     -A 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36' \
     'http://restapi.some-site.com/getsomething?argument=value&argument2=value'

En este ejemplo, el referente (-e o --referer en curl) es 'localhost'.


45

Para pasar varios encabezados en una solicitud curl, simplemente agregue más -Ho --headera su comando curl.

Ejemplo

//Simplified
$ curl -v -H 'header1:val' -H 'header2:val' URL

//Explanatory
$ curl -v -H 'Connection: keep-alive' -H 'Content-Type: application/json'  https://www.example.com

Ir más lejos

Para los campos de encabezado HTTP estándar como User-Agent , Cookie , Host , en realidad hay otra forma de configurarlos. El comando curl ofrece opciones designadas para configurar estos campos de encabezado:

  • -A (o --user-agent): establece el campo "User-Agent".
  • -b (o --cookie): establece el campo "Cookie".
  • -e (o --referer): establece el campo "Referer".
  • -H (o --header): establece el campo "Encabezado"

Por ejemplo, los siguientes dos comandos son equivalentes. Ambos cambian la cadena "User-Agent" en el encabezado HTTP.

    $ curl -v -H "Content-Type: application/json" -H "User-Agent: UserAgentString" https://www.example.com
    $ curl -v -H "Content-Type: application/json" -A "UserAgentString" https://www.example.com
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.