2038 Stimmen

Wie sendet man einen Header mit einer HTTP-Anfrage durch einen cURL-Aufruf?

Ich möchte eine Kopfzeile an meinen Apache-Server auf einer Linux-Box senden. Wie kann ich dies über einen cURL-Aufruf erreichen?

109 Stimmen

Es gibt eine gute Möglichkeit, die Verwendung von curl für http-Anfragen anhand von Beispielen zu lernen. Laden Sie die neueste Version von Postman herunter, konfigurieren Sie eine beliebige HTTP-Anfrage auf der Benutzeroberfläche (z.B. post, put, get mit Headern und json body) und klicken Sie dann auf "generate code" und wählen Sie die Option "curl". Sie erhalten dann die entsprechende Befehlszeile.

3 Stimmen

Hier ist ein 2minütiger Videolink zum oben kommentierten Ansatz youtu.be/L3m6cpQPsV0

2368voto

Tader Punkte 24002

man curl :

   -H/--header <header>
          (HTTP)  Extra header to use when getting a web page. You may specify
          any number of extra headers. Note that if you should  add  a  custom
          header that has the same name as one of the internal ones curl would
          use, your externally set header will be used instead of the internal
          one.  This  allows  you  to make even trickier stuff than curl would
          normally do. You should not replace internally set  headers  without
          knowing  perfectly well what you're doing. Remove an internal header
          by giving a replacement without content on the  right  side  of  the
          colon, as in: -H "Host:".

          curl  will  make sure that each header you add/replace get sent with
          the proper end of line marker, you should thus not  add  that  as  a
          part  of the header content: do not add newlines or carriage returns
          they will only mess things up for you.

          See also the -A/--user-agent and -e/--referer options.

          This option can be used multiple times to add/replace/remove  multi-
          ple headers.

Beispiel:

curl --header "X-MyHeader: 123" www.google.com

Sie können die Anfrage, die curl gesendet hat, sehen, indem Sie die -v Option.

121 Stimmen

Wenn Sie mehrere Header senden wollen, verwenden Sie mehr als einen --header, es ist in Ordnung, curl wird jeden als einen anderen Header parsen. Es gibt keine Möglichkeit, Header innerhalb des gleichen --header Parameters zu trennen. Beispiel: curl --header "Accept: javascript" --header "test: hello" -v www.google.com

5 Stimmen

Wenn die Leute Beispiele wollen, lasse ich das einfach hier stehen: bropages.org

1 Stimmen

Man-Seiten (zumindest unter OSX) enthalten nun ein Beispiel: Beispiel: # curl -H "X-First-Name: Joe" 192.168.0.1

929voto

Randhi Rupesh Punkte 13940

GET:

mit JSON:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource

mit XML:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource

POST:

Für die Buchung von Daten:

curl --data "param1=value1&param2=value2" http://hostname/resource

Zum Hochladen von Dateien:

curl --form "fileupload=@filename.txt" http://hostname/resource

RESTful HTTP Post:

curl -X POST -d @filename http://hostname/resource

Für die Anmeldung bei einer Website (auth):

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

0 Stimmen

Was ist mit @filename für den RESTful-Post gemeint? POSTen Sie eine Datei an einen REST-Server? das erscheint mir merkwürdig

13 Stimmen

Für alle, die später kommen und sich das Gleiche fragen... Die @-Notation ist eine Möglichkeit, die Daten, die an den Server gesendet werden sollen, aus einer Datei zu lesen, anstatt sie in die Curl-Anfrage einzubinden. Sie posten keine Datei an sich, sondern den Inhalt der Datei als Body Ihrer POST-Anfrage.

1 Stimmen

Eine ausführlichere Antwort finden Sie hier: stackoverflow.com/questions/14978411/ :)

294voto

James Punkte 3066

En PHP :

curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue'));

oder Sie können mehrere einstellen:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue', 'HeaderName2:HeaderValue2'));

1 Stimmen

@James es funktioniert gut in einigen Fällen, aber in anderen CURL sendet einen zusätzlichen Header "Expect: 100-continue" - jede Idee, wie man es entfernen?

1 Stimmen

@coding_idiot: Sie können "Expect:" im Array der Header-Werte übergeben, um es zu deaktivieren. Bsp.: curl_setopt($ch,CURLOPT_HTTPHEADER,array('HeaderName: HeaderValue', 'Expect:'));

19 Stimmen

OP hat nichts über den PHP-Gedanken gesagt

65voto

Greg Punkte 306033

50voto

Vietnhi Phuvan Punkte 2504

GET (mehrere Parameter):

curl -X  GET "http://localhost:3000/action?result1=gh&result2=ghk"

ou

curl --request  GET "http://localhost:3000/action?result1=gh&result2=ghk"

ou

curl  "http://localhost:3000/action?result1=gh&result2=ghk"

ou

curl -i -H "Application/json" -H "Content-type: application/json"  "http://localhost:3000/action?result1=gh&result2=ghk"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X