Wie kann ich den Anforderungsheader für Curl festlegen?


196

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


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

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'.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.