Jak mogę ustawić nagłówek żądania dla curl?

197

Jak mam przekazać wiele wartości w nagłówku curlżądania?

Ryan
źródło
Czy masz przykład, którego używasz teraz, który możesz nam pokazać?
Ryan Bigg
4
dodaj wiele flag -H. Na przykładcurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk

Odpowiedzi:

242

Wystarczy użyć -Hparametru kilka razy:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com
Mads Mobæk
źródło
Co jeśli nagłówek zawiera "?
Freewind
2
@Freewind zawiń wartość pojedynczym cudzysłowiem zamiast podwójnego lub uniknij go. To samo, co zawsze robisz w tym przypadku.
Darth Egregious
47

Czasami zmiana nagłówka nie jest wystarczająca, niektóre strony również sprawdzają odsyłacz:

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'

W tym przykładzie odnośnikiem (-e lub --referer w curl) jest „localhost”.

DavidG
źródło
45

Aby przekazać wiele nagłówków w żądaniu curl, po prostu dodaj dodatkowe -Hlub --headerdo polecenia curl.

Przykład

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

Idąc dalej

W przypadku standardowych pól nagłówka HTTP, takich jak User-Agent , Cookie , Host , istnieje inny sposób ich ustawienia. Polecenie curl oferuje określone opcje ustawiania tych pól nagłówka:

  • -A (lub --user-agent): ustaw pole „User-Agent”.
  • -b (lub --cookie): ustaw pole „Cookie”.
  • -e (lub --referer): ustaw pole „Referer”.
  • -H (lub --header): ustaw pole „Nagłówek”

Na przykład następujące dwa polecenia są równoważne. Oba zmieniają ciąg „User-Agent” w nagłówku 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
źródło