782 Stimmen

Anzeige von Anfrage-Headern mit der Kommandozeile curl

Die Kommandozeile curl kann den Antwort-Header anzeigen, indem sie -D Option, aber ich möchte sehen, welchen Request Header er sendet. Wie kann ich das tun?

40 Stimmen

curl --head http://google.com tut dasselbe wie die -I Flagge :)

16 Stimmen

Hinweis zur Verwendung --head / -I : Nicht alle Server reagieren genau gleich auf HEAD Anfragen (zum Beispiel, Content-Encoding fehlen würde, wenn Sie versuchen würden, zu überprüfen, ob der Body gzipped ist) und nicht alle Server unterstützen HEAD . -v ist in der Regel die sicherere Wahl.

5 Stimmen

928voto

Asaph Punkte 153684

Sich kringeln -v o --verbose zeigt unter anderem die HTTP-Anfrage-Header an. Hier ist ein Beispiel für die Ausgabe:

$ curl -v http://google.com/
* About to connect() to google.com port 80 (#0)
*   Trying 66.102.7.104... connected
* Connected to google.com (66.102.7.104) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.16.4 (i386-apple-darwin9.0) libcurl/7.16.4 OpenSSL/0.9.7l zlib/1.2.3
> Host: google.com
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
< Location: http://www.google.com/
< Content-Type: text/html; charset=UTF-8
< Date: Thu, 15 Jul 2010 06:06:52 GMT
< Expires: Sat, 14 Aug 2010 06:06:52 GMT
< Cache-Control: public, max-age=2592000
< Server: gws
< Content-Length: 219
< X-XSS-Protection: 1; mode=block
< 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
* Connection #0 to host google.com left intact
* Closing connection #0

9 Stimmen

Was ist, wenn ich das Paket nur zusammenstellen, aber nicht verschicken möchte?

0 Stimmen

@jacobsimeon Ich denke, das liegt daran, dass es nicht nur die Kopfzeilen der Anfrage sondern auch die Antwort-Kopfzeilen y Antwortkörper .

420voto

JaffaTheCake Punkte 12624

Eine beliebte Antwort für die Anzeige von Antwort Kopfzeilen, aber OP fragte nach Anfrage Kopfzeilen.

curl -s -D - -o /dev/null http://example.com
  • -s : Fortschrittsbalken nicht mehr anzeigen
  • -D - : Kopfzeilen in eine Datei ausgeben, aber - sendet es an stdout
  • -o /dev/null : Antwortkörper ignorieren

Dies ist besser als -I denn es sendet keine HEAD Anfrage, was zu unterschiedlichen Ergebnissen führen kann.

Es ist besser als -v weil man nicht so viele Hacks braucht, um es zu ent-verbieren.

33 Stimmen

Lesen Sie die Frage - dies ist für Antwort-Header, nicht für Anfrage-Header

0 Stimmen

-o Option ist das, wonach ich gesucht habe (die Frage zielt jedoch auf etwas anderes ab)

130 Stimmen

Diese Antwort ist für mich nützlich, weil ich die Frage auch falsch verstanden habe.

124voto

evandrix Punkte 5850

Ich glaube, der Befehlszeilenschalter, den Sie an curl übergeben müssen, lautet -I .

Beispiel für die Verwendung:

$ curl -I http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287  
HTTP/1.1 301 Moved Permanently
Date: Sat, 29 Dec 2012 15:22:05 GMT
Server: Apache
Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/
Content-Type: text/html; charset=iso-8859-1

Wenn Sie einen HTTP-Statuscode 301 als Antwort erhalten, können Sie auch eine -L Argumentwechsel zu sagen curl um URL-Weiterleitungen zu verfolgen, und in diesem Fall die Kopfzeilen aller Seiten (einschließlich der URL-Weiterleitungen) zu drucken, wie unten dargestellt:

$ curl -I -L http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287
HTTP/1.1 301 Moved Permanently
Date: Sat, 29 Dec 2012 15:22:13 GMT
Server: Apache
Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 Found
Date: Sat, 29 Dec 2012 15:22:13 GMT
Server: Apache
Set-Cookie: UID=b8c37e33defde51cf91e1e03e51657da
Location: noaccess.php
Content-Type: text/html

HTTP/1.1 200 OK
Date: Sat, 29 Dec 2012 15:22:13 GMT
Server: Apache
Content-Type: text/html

52 Stimmen

El -I zeigt die Option Antwort Kopfzeilen. Die Frage bezog sich auf die Anfrage Kopfzeilen.

70 Stimmen

El -I Optionen veranlasst curl, eine HTTP HEAD was die Antwort des Servers verändern könnte. Besser zu verwenden -v Schalter, glaube ich.

1 Stimmen

Wenn Sie dies mit etwas anderem als einem HEAD Anfrage (wie -X POST ) und erhalten "Sie können nur eine HTTP-Anfrage auswählen!" als stackoverflow.com/questions/286982/ wird Ihnen wahrscheinlich weiterhelfen. Die Sache ist die -I macht eine HEAD Anfrage, wie acw angegeben und wenn Ihr curl einen weiteren Aufruf einrichten, haben Sie zwei HTTP-Anfragen in curl anrufen...

89voto

William Denniss Punkte 15469

Die Option verbose ist praktisch, aber wenn Sie sehen wollen 何事も die curl ausführt (einschließlich des HTTP-Bodys, der übertragen wird, und nicht nur der Header), schlage ich vor, eine der folgenden Optionen zu verwenden:

  • --trace-ascii - # stdout
  • --trace-ascii output_file.txt # Datei

0 Stimmen

Das glaube ich nicht, denn es werden auch die Kopfzeilen und der Text der Antwort angezeigt!

71voto

Benibr Punkte 913

Mit dem folgenden Befehl erhalten Sie eine schöne Kopfzeilenausgabe:

 curl -L -v -s -o /dev/null google.de
  • -L, --location Umleitungen folgen
  • -v, --verbose mehr Ausgang, gibt die Richtung an
  • -s, --silent keinen Fortschrittsbalken anzeigen
  • -o, --output /dev/null empfangenen Körper nicht zeigen

Oder die kürzere Version:

 curl -Lvso /dev/null google.de

Ergebnisse in:

* Rebuilt URL to: google.de/
*   Trying 2a00:1450:4008:802::2003...
* Connected to google.de (2a00:1450:4008:802::2003) port 80 (#0)
> GET / HTTP/1.1
> Host: google.de
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: http://www.google.de/
< Content-Type: text/html; charset=UTF-8
< Date: Fri, 12 Aug 2016 15:45:36 GMT
< Expires: Sun, 11 Sep 2016 15:45:36 GMT
< Cache-Control: public, max-age=2592000
< Server: gws
< Content-Length: 218
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
<
* Ignoring the response-body
{ [218 bytes data]
* Connection #0 to host google.de left intact
* Issue another request to this URL: 'http://www.google.de/'
*   Trying 2a00:1450:4008:800::2003...
* Connected to www.google.de (2a00:1450:4008:800::2003) port 80 (#1)
> GET / HTTP/1.1
> Host: www.google.de
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 12 Aug 2016 15:45:36 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Set-Cookie: NID=84=Z0WT_INFoDbf_0FIe_uHqzL9mf3DMSQs0mHyTEDAQOGY2sOrQaKVgN2domEw8frXvo4I3x3QVLqCH340HME3t1-6gNu8R-ArecuaneSURXNxSXYMhW2kBIE8Duty-_w7; expires=Sat, 11-Feb-2017 15:45:36 GMT; path=/; domain=.google.de; HttpOnly
< Accept-Ranges: none
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
<
{ [11080 bytes data]
* Connection #1 to host www.google.de left intact

Wie Sie sehen können curl gibt sowohl die ausgehenden als auch die eingehenden Kopfzeilen aus und überspringt die Körperdaten, obwohl sie die Größe des Körpers angibt.

Zusätzlich wird für jede Zeile die Richtung angegeben, so dass sie leicht zu lesen ist. Ich fand es besonders nützlich, um lange Ketten von Weiterleitungen aufzuspüren.

6 Stimmen

Das gefällt mir besser als -v Option mit den meisten Stimmen. Der Kürze halber kann dies auch sein curl -Lvso /dev/null <target> so lange, wie die o kommt zum Schluss.

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