HTTP
HTTP-Anfragen
Suche…
Parameter
HTTP-Methode | Zweck |
---|---|
OPTIONS | Rufen Sie Informationen zu den Kommunikationsoptionen (verfügbare Methoden und Header) ab, die für den angegebenen Anforderungs-URI verfügbar sind. |
GET | Rufen Sie die Daten ab, die durch den Anforderungs-URI identifiziert wurden, oder die Daten, die vom Skript erzeugt werden, das im Anforderungs-URI verfügbar ist. |
HEAD | Identisch mit GET außer dass vom Server kein Nachrichtentext zurückgegeben wird: nur Header. |
POST | Senden Sie einen (im Nachrichtentext angegebenen) Datenblock an den Server, um ihn der in der Anforderungs-URI angegebenen Ressource hinzuzufügen. Wird am häufigsten für die Formularverarbeitung verwendet. |
PUT | Speichern Sie die eingeschlossenen Informationen (im Nachrichtentext) als neue oder aktualisierte Ressource unter dem angegebenen Anforderungs-URI. |
DELETE | Löschen Sie die in der Anforderungs-URI angegebene Ressource, oder warten Sie sie zum Löschen. |
TRACE | Im Wesentlichen ein Echo-Befehl: Ein funktionsfähiger, kompatibler HTTP-Server muss die gesamte Anforderung als Hauptteil einer 200-Antwort (OK) zurücksenden. |
Bemerkungen
Die CONNECT
Methode wird durch die Methodendefinitionsspezifikation für die Verwendung mit Proxys reserviert , die zwischen Proxying- und Tunneling-Modus wechseln können (z. B. für SSL-Tunneling).
Manuelles Senden einer minimalen HTTP-Anforderung mithilfe von Telnet
Dieses Beispiel zeigt, dass HTTP ein textbasiertes Internetkommunikationsprotokoll ist und eine grundlegende HTTP-Anforderung und die entsprechende HTTP-Antwort zeigt.
Mit Telnet können Sie wie folgt manuell eine minimale HTTP-Anforderung über die Befehlszeile senden.
Starten Sie eine Telnet-Sitzung mit dem Webserver
www.example.org
an Port 80:telnet www.example.org 80
Telnet meldet, dass Sie mit dem Server verbunden sind:
Connected to www.example.org. Escape character is '^]'.
Geben Sie eine Anforderungszeile zum Senden eines GET-Anforderungs-URL-Pfads
/
über HTTP 1.1 einGET / HTTP/1.1
Geben Sie eine HTTP-Headerfeldzeile ein, um den Hostnamen-Teil der erforderlichen URL zu identifizieren, der in HTTP 1.1 erforderlich ist
Host: www.example.org
Geben Sie eine leere Zeile ein, um die Anfrage abzuschließen.
Der Webserver sendet die HTTP-Antwort, die in der Telnet-Sitzung angezeigt wird.
Die komplette Sitzung ist wie folgt. Die erste Zeile der Antwort ist die HTTP-Statuszeile , die den Statuscode 200 und den Statustext OK enthält . Dies zeigt an, dass die Anforderung erfolgreich verarbeitet wurde. Darauf folgen eine Reihe von HTTP-Header-Feldern, eine Leerzeile und die HTML-Antwort.
$ telnet www.example.org 80
Trying 2606:2800:220:1:248:1893:25c8:1946...
Connected to www.example.org.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.example.org
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html
Date: Thu, 21 Jul 2016 15:56:05 GMT
Etag: "359670651"
Expires: Thu, 28 Jul 2016 15:56:05 GMT
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
Server: ECS (lga/1318)
Vary: Accept-Encoding
X-Cache: HIT
x-ec-custom-error: 1
Content-Length: 1270
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
( style
Element und Leerzeilen aus dem HTML reponse entfernt, der Kürze halber.)
Grundlegendes Anforderungsformat
In HTTP 1.1 besteht eine minimale HTTP-Anforderung aus einer Anforderungszeile und einem Host
:
GET /search HTTP/1.1 \r\n
Host: google.com \r\n
\r\n
Die erste Zeile hat dieses Format:
Method Request-URI HTTP-Version CRLF
Method
sollte eine gültige HTTP-Methode sein. einer von [1] [2] :
-
OPTIONS
-
GET
-
HEAD
-
POST
-
PUT
-
DELETE
-
PATCH
-
TRACE
-
CONNECT
Request-URI
gibt entweder den URI oder den Pfad zu der Ressource an, die der Client anfordert. Es kann entweder sein:
- ein vollständig qualifizierter URI, einschließlich Schema, Host, (optionaler) Port und Pfad; oder
- ein Pfad. In diesem Fall muss der
Host
Hostheader angegeben werden
HTTP-Version
gibt die Version des HTTP-Protokolls an, das der Client verwendet. Für HTTP 1.1-Anforderungen muss dies immer HTTP/1.1
.
Die Anforderungszeile endet mit einem Wagenrücklauf-Zeilenvorschubpaar, normalerweise dargestellt durch \r\n
.
Anforderungsheaderfelder
Header-Felder (normalerweise nur als "Header" bezeichnet) können einer HTTP-Anfrage hinzugefügt werden, um zusätzliche Informationen zur Anfrage bereitzustellen. Ein Header hat eine Semantik, die den Parametern ähnelt, die an eine Methode in einer beliebigen Programmiersprache übergeben werden, die solche Funktionen unterstützt.
Eine Anfrage mit Host
, User-Agent
und Referer
Headern könnte folgendermaßen aussehen:
GET /search HTTP/1.1 \r\n
Host: google.com \r\n
User-Agent: Chrome/54.0.2803.1 \r\n
Referer: http://google.com/ \r\n
\r\n
Eine vollständige Liste der unterstützten HTTP 1.1-Anforderungsheader finden Sie in der Spezifikation . Die häufigsten sind:
-
Host
- der Hostnamenteil der Anforderungs-URL (in HTTP / 1.1 erforderlich) -
User-Agent
- eine Zeichenfolge, die den anfordernden Benutzeragenten darstellt; -
Referer
- der URI, von dem aus der Client hierherReferer
wurde; und -
If-Modified-Since
- gibt ein Datum an, an dem der Server feststellen kann, ob sich eine Ressource geändert hat, und gibt an, dass der Client eine zwischengespeicherte Kopie verwenden kann, falls dies nicht der Fall ist.
Ein Header sollte als Name: Value CRLF
. Name
ist der Name
der Kopfzeile, z. B. User-Agent
. Value
ist die ihm zugewiesene Daten, und die Zeile sollte mit einer CRLF enden. Die Namen der Headern unterscheiden nicht zwischen Groß- und Kleinschreibung und dürfen nur Buchstaben, Ziffern und die Zeichen !#$%&'*+-.^_`|~
(RFC7230 Abschnitt 3.2.6 Feldwertkomponenten) verwenden.
Der Name des Referer
Header-Feldes ist ein Tippfehler für 'Referrer', der versehentlich in RFC1945 eingeführt wurde .
Nachrichtenkörper
Einige HTTP-Anforderungen enthalten möglicherweise einen Nachrichtentext. Dies sind zusätzliche Daten, die der Server zur Verarbeitung der Anfrage verwendet. Nachrichtentexte werden am häufigsten in POST- oder PATCH- und PUT-Anforderungen verwendet, um neue Daten bereitzustellen, die der Server auf eine Ressource anwenden soll.
Anforderungen, die einen Nachrichtentext enthalten, sollten immer die Länge in Bytes mit Content-Length
Header enthalten.
Ein Nachrichtentext ist nach allen Kopfzeilen und einer doppelten CRLF enthalten. Eine PUT-Beispielanforderung mit einem Body könnte folgendermaßen aussehen:
PUT /files/129742 HTTP/1.1\r\n
Host: example.com\r\n
User-Agent: Chrome/54.0.2803.1\r\n
Content-Length: 202\r\n
\r\n
This is a message body. All content in this message body should be stored under the
/files/129742 path, as specified by the PUT specification. The message body does
not have to be terminated with CRLF.
HEAD
und TRACE
Anforderungen dürfen keinen Nachrichtentext enthalten.