Como posso definir o cabeçalho da solicitação de ondulação?

197

Como eu passaria vários valores no cabeçalho para uma curlsolicitação?

ryan
fonte
Você tem um exemplo que você está usando agora que pode nos mostrar?
precisa
4
adicione vários sinalizadores -H. Por exemplocurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk

Respostas:

242

Basta usar o -Hparâmetro várias vezes:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com
Mads Mobæk
fonte
E se o cabeçalho contiver "?
Freewind
2
@Freewind agrupe o valor com aspas simples, em vez de duas, ou escape. A mesma coisa que você sempre faz nesse caso.
Darth Egregious
47

Às vezes, alterar o cabeçalho não é suficiente, alguns sites também verificam o referenciador:

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'

Neste exemplo, o referenciador (-e ou --referer in curl) é 'localhost'.

DavidG
fonte
45

Para passar vários cabeçalhos em uma solicitação de curvatura, basta adicionar mais -Hou --headerao seu comando de curvatura.

Exemplo

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

Indo além

Para campos de cabeçalho HTTP padrão, como User-Agent , Cookie , Host , existe realmente outra maneira de defini-los. O comando curl oferece opções designadas para definir estes campos de cabeçalho:

  • -A (ou --user-agent): define o campo "User-Agent".
  • -b (ou --cookie): define o campo "Cookie".
  • -e (ou --referer): define o campo "Referer".
  • -H (ou --header): define o campo "Header"

Por exemplo, os dois comandos a seguir são equivalentes. Os dois alteram a string "User-Agent" no cabeçalho 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
fonte