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

Comment passer plusieurs valeurs dans l’en-tête pour une requête curl ?

Utilisez simplement le paramètre -H plusieurs fois:

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

Parfois, changer d’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érant (-e ou –referer in curl) est ‘localhost’.

Pour transmettre plusieurs en-têtes dans une requête curl, il vous suffit d’append -H ou --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' http://www.example.com 

Aller plus loin

Pour les champs d’en-tête HTTP standard tels que User-Agent , Cookie , Host , il existe un autre moyen 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éfinit le champ “User-Agent”.
  • -b (ou –cookie): définir le champ “Cookie”.
  • -e (ou –referer): définit le champ “Referer”.
  • -H (ou –header): définir le champ “En-tête”

Par exemple, les deux commandes suivantes sont équivalentes. Les deux changent la chaîne “User-Agent” dans l’en-tête HTTP.

  $ curl -v -H "Content-Type: application/json" -H "User-Agent: UserAgentSsortingng" http://www.example.com $ curl -v -H "Content-Type: application/json" -A "UserAgentSsortingng" http://www.example.com