¿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.