Comment puis-je définir l'en-tête de demande pour curl?

197

Comment passer plusieurs valeurs dans l'en-tête d'une curldemande?

ryan
la source
Avez-vous un exemple que vous utilisez actuellement que vous pourriez nous montrer?
Ryan Bigg
4
ajouter plusieurs indicateurs -H. Par exemplecurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk

Réponses:

242

Utilisez simplement le -Hparamètre plusieurs fois:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com
Mads Mobæk
la source
Et si l'en-tête contient "?
Freewind le
2
@Freewind envelopper la valeur avec un guillemet simple au lieu d'un double, ou l'échapper. Même chose que vous faites toujours dans ce cas.
Dark Egregious
47

Parfois, changer l'en-tête ne suffit pas, certains sites vérifient également le référent:

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'

Dans cet exemple, le référent (-e ou --referer en curl) est 'localhost'.

DavidG
la source
45

Pour passer plusieurs en-têtes dans une demande curl, il vous suffit d'ajouter des commandes supplémentaires -Hou --headerà votre commande curl.

Exemple

//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

Aller plus loin

Pour les champs d'en-tête HTTP standard tels que User-Agent , Cookie , Host , il existe en fait une autre façon de les définir. La commande curl offre des options désignées pour définir ces champs d'en-tête:

  • -A (ou --user-agent): définissez le champ "User-Agent".
  • -b (ou --cookie): définissez le champ "Cookie".
  • -e (ou --referer): définissez le champ "Referer".
  • -H (ou --header): définir le champ "En-tête"

Par exemple, les deux commandes suivantes sont équivalentes. Les deux modifient la chaîne "User-Agent" dans l'en-tête 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
la source