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

197

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

Ryan
fuente
¿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
Mads Mobæk
fuente
¿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'.

DavidG
fuente
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
Tyler Rafferty
fuente