Wie kann ich den Anforderungsheader für Curl festlegen?

196

Wie würde ich mehrere Werte im Header für eine curlAnfrage übergeben?

Ryan
quelle
Haben Sie ein Beispiel, das Sie gerade verwenden und das Sie uns zeigen könnten?
Ryan Bigg
4
Fügen Sie mehrere -H-Flags hinzu. Zum Beispielcurl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk

Antworten:

241

Verwenden Sie den -HParameter einfach mehrmals:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com
Mads Mobæk
quelle
Was ist, wenn der Header enthält "?
Freilauf
2
@Freewind umschließt den Wert mit einem einfachen Anführungszeichen anstelle eines doppelten oder maskiert ihn. Das gleiche, was Sie in diesem Fall immer tun.
Darth Egregious
47

Manchmal reicht es nicht aus, den Header zu ändern. Einige Websites überprüfen auch den Referer:

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'

In diesem Beispiel ist der Referer (-e oder --referer in curl) 'localhost'.

DavidG
quelle
44

Um mehrere Header in einer Curl-Anfrage zu übergeben, fügen Sie einfach zusätzliche -Hoder --headerzu Ihrem Curl-Befehl hinzu.

Beispiel

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

Weitergehen

Für Standard-HTTP-Headerfelder wie User-Agent , Cookie , Host gibt es tatsächlich eine andere Möglichkeit, sie festzulegen. Der Befehl curl bietet bestimmte Optionen zum Festlegen dieser Kopfzeilenfelder:

  • -A (oder --user-agent): Setzen Sie das Feld "User-Agent".
  • -b (oder --cookie): Setze das Feld "Cookie".
  • -e (oder --referer): Setzen Sie das Feld "Referer".
  • -H (oder --header): Setze das Feld "Header"

Beispielsweise sind die folgenden zwei Befehle äquivalent. Beide ändern die Zeichenfolge "User-Agent" im HTTP-Header.

    $ 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
quelle