2015-07-08 7 views
10

Curl standardmäßig fügt Header wie Content-Typ und User-Agent. Normalerweise ist das eine gute Sache, aber ich versuche zu testen, was unser Server macht, wenn diese Header fehlen. Mein Problem ist mit dem Content-Type-Header. Wenn es fehlt, nimmt der Server korrekt an, dass der Benutzer json gesendet hat. Allerdings fügt curl tatsächlich den fehlenden Header hinzu und nimmt fälschlicherweise an, dass der Inhalt, den ich posten soll, application/x-www-form-urlencoded lautet. Es sendet auch einen Accept-Header von /. Ich nehme an, das ist ein schönes Standardverhalten, aber ich möchte grundsätzlich keine Header senden, die ich nicht angegeben habe. Gibt es dafür eine Option?Wie kann ich Standard-Header entfernen, die curl sendet

curl -v -X POST 'https://domain.com' -d '{...}' 

> User-Agent: curl/7.37.1 
> Host: domain.com 
> Accept: */* 
> Content-Length: 299 
> Content-Type: application/x-www-form-urlencoded 

Antwort

17

Verwenden -H Flagge mit dem Kopf Sie entfernen möchten, und ohne Inhalt nach dem :

-H, --header LINE Custom header to pass to server (H) 

Probe

-H 'User-Agent:' 

Dies wird die Anfrage ohne die User-Agent machen Header (anstatt es mit zu senden ein leerer Wert)

+1

Zum Entfernen von Proxy-Headern ersetzen Sie -H durch --proxy-header, z. '--proxy-header" Proxy-Verbindung: "' –

+0

Mit der Standard-Windows-Shell ('cmd.exe') musste ich die einfachen Anführungszeichen durch doppelte Anführungszeichen ersetzen (oder sie komplett entfernen). – MrWhite

+0

'-H 'User-Agent:'' löscht den Header wie erwartet (es wird kein Header und kein Wert gesendet), aber sei vorsichtig mit '-H 'Content-Type:'' welcher ** sendet Header mit leerem Wert ** . Es ist ein merkwürdiges unterschiedliches Verhalten des curl-Befehls. – mikep

2

Scheint wie curl sendet 3 Header. Um eine Anfrage zu tun, ohne sie können Sie tun:

curl 172.20.11.100:8080/healthz -v -H 'User-Agent:' -H 'Accept:' -H 'Host:' 

+1 bis @cmlndz Antwort, wie er erklärt, wie ein einzelnes Header zu entfernen.

Sie können überprüfen, welche Header tatsächlich gesendet werden, indem Sie die Option -v wie oben gezeigt hinzufügen.

Verwandte Themen