HTTP-Methoden
HTTP (Hypertext Transfer Protocol) wurde entwickelt, um die Kommunikation zwischen Clients und dem Server zu ermöglichen. Es arbeitet nach dem Request-Response-Modell.
Es gibt zwei grundlegende HTTP-Methoden: GET und POST.
GET-Methode
Die GET-Methode fordert Daten von einer angegebenen Quelle an. GET-Anfragen können zwischengespeichert werden und bleiben im Browserverlauf. Sie können auch als Lesezeichen gespeichert werden.
Sie sollte niemals für sensible Daten verwendet werden. GET-Anfragen haben Längenbeschränkungen und sollten nur zum Abrufen von Daten verwendet werden.
DANGER
Die Query-Strings (Name/Wert-Paare) werden in der URL der GET-Anfrage gesendet.
Beispiel für ein Eingabefeld vom Typ text mit der get-Methode
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<form action="/form/submit" method="get">
First name:
<input type="text" name="username" placeholder="Your name" />
<br />
<br />
<input type="submit" value="Submit" />
</form>
</body>
</html>POST-Methode
Die POST-Methode sendet Daten zur Verarbeitung an eine angegebene Quelle. Im Gegensatz zur GET-Methode werden POST-Anfragen nie zwischengespeichert, bleiben nicht im Browserverlauf und können nicht als Lesezeichen gespeichert werden. Außerdem unterliegen POST-Anfragen keinen URL-Längenbeschränkungen, obwohl Server in der Regel eigene Größenlimits für den Body erzwingen.
DANGER
Die Query-Strings (Name/Wert-Paare) werden im HTTP-Nachrichtentext der POST-Anfrage gesendet.
Beispiel für ein Formular mit der "post"-Methode
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<form action="/form/submit" method="post">
First name:
<input type="text" name="username" placeholder="Your name" />
<br /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>Vergleich der GET- und POST-Methoden
| Feature | GET | POST |
|---|---|---|
| Zurück-Button/Neu laden | Unbedenklich | Das Neuladen der Seite sendet die Formulardaten erneut. Der Browser muss in diesem Fall warnen, dass die Daten erneut gesendet werden. |
| Kann als Lesezeichen gespeichert werden | Ja | Nein |
| Kann zwischengespeichert werden | Ja | Nein |
| Kodierungstyp | application/x-www-form-urlencoded | application/x-www-form-urlencoded or multipart/form-data |
| Verlauf | Bleibt im Browserverlauf. | Bleibt nicht im Browserverlauf. |
| Beschränkungen der Datenlänge | Beim Senden von Daten fügt die GET-Methode die Daten zur URL hinzu. Die URL-Länge ist begrenzt (maximale URL-Länge beträgt 2048 Zeichen). | Hat keine URL-Längenbeschränkungen, obwohl Server typischerweise Größenlimits für den Body erzwingen. |
| Beschränkung des Datentyps | Vor allem ASCII-Zeichen, wobei UTF-8 über Prozentkodierung unterstützt wird. | Hat keine Beschränkungen. Binärdaten sind ebenfalls erlaubt. |
| Sicherheit | Weniger sicher als POST, da die gesendeten Daten Teil der URL sind. | POST ist sicherer als GET, da die Daten weder in der URL noch im Browserverlauf sichtbar sind. Allerdings werden bei beiden Daten im Klartext über HTTP übertragen und für echte Sicherheit ist HTTPS erforderlich. |
| Sichtbarkeit | Daten sind für alle in der URL sichtbar. | Zeigt die Daten nicht in der URL an. |
Note HTML-Formulare unterstützen nativ nur die Methoden
GETundPOST. Um mit FormularenPUT,PATCHoderDELETEzu verwenden, benötigen Sie in der Regel JavaScript oder ein Backend-Routing, um diese Methoden zu simulieren.
Andere HTTP-Anfragemethoden
Neben den GET- und POST-Methoden gibt es noch einige andere Methoden. Siehe unten:
| Method | Description |
|---|---|
| HEAD | Es ist dasselbe wie die GET-Methode, gibt aber nur HTTP-Header zurück, nicht den Dokumentenrumpf. |
| OPTIONS | Gibt die vom Server unterstützten HTTP-Methoden zurück. |
| CONNECT | Wandelt die Anfrageverbindung in einen transparenten TCP/IP-Tunnel um. |
Put-Methode
Die PUT-Methode wird hauptsächlich für Aktualisierungs-Operationen verwendet. Anders gesagt: Bei dieser Methode übergeben wir eine Ziel-Resource-URL zusammen mit dem Request-Body, der die Repräsentation der ursprünglichen Ressource enthält, die kürzlich aktualisiert wurde. Diese Methode kann auch zum Erzeugen einer Ressource verwendet werden, wenn die Ressourcen-ID vom Client und nicht vom Server gewählt wird.
Beachten Sie, dass PUT nicht als sichere Methode gilt, da sie auf dem Server einen Zustand erzeugen oder ändern kann, sie ist jedoch idempotent. Das bedeutet: Wenn Sie die Ressource mit dieser Methode erstellen oder ändern und dann denselben Aufruf ein zweites Mal ausführen, ist die Ressource weiterhin vorhanden und hat denselben Zustand wie beim ersten Aufruf.
Das folgende Beispiel fordert den Server auf, den angegebenen Entity-Body in method.py im Stammverzeichnis des Servers zu speichern:
HTTP-Methoden - Beispiel für die Put-Methode
PUT /method.py HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.w3docs.com
Accept-Language: en-us
Connection: Keep-Alive
Content-Type: text/html
Content-Length: 160Nachdem der angegebene Entity-Body in der Datei gespeichert wurde, sendet der Server die folgende Antwort:
HTTP-Methoden - Beispiel für die Put-Methode2
HTTP/1.1 201 Created
Date: Tue, 13 Dec 2019 14:53:57 GMT
Server: Apache/2.2.14 (Win32)
Content-Type: text/html
Content-length: 40
Connection: ClosedPatch-Methode
Die PATCH-Methode wird hauptsächlich für Änderungs-Operationen verwendet. Sie benötigt nicht die gesamte Ressource. Sie muss nur die Änderungen an der Ressource enthalten. Diese Methode ist weder idempotent noch sicher. Kollisionen zwischen zwei PATCH-Anfragen können sehr gefährlich sein, da einige Patch-Formate eine Operation von einem gemeinsamen Ausgangspunkt benötigen; andernfalls wird die Ressource beschädigt.
Delete-Methode
Wie Sie sich denken können, wird diese Methode verwendet, um eine durch eine URL identifizierte Ressource zu löschen. Diese Methode ist ebenfalls idempotent. Beim Löschen einer Ressource wird sie entfernt. Mehrfaches Aufrufen von DELETE führt zum selben Ergebnis — die Ressource bleibt entfernt.
Das folgende Beispiel fordert den Server auf, die Datei method.py im Stammverzeichnis des Servers zu löschen:
Delete-Methoden-Anfrage
DELETE /method.py HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.w3docs.com
Accept-Language: en-us
Connection: Keep-AliveNachdem die Datei gelöscht wurde, sendet der Server die folgende Antwort:
Delete-Methoden-Antwort
HTTP/1.1 200 OK
Date: Tue, 13 Dec 2019 14:53:57 GMT
Server: Apache/2.2.14 (Win32)
Content-Type: text/html
Content-length: 20
Connection: ClosedPractice
Welche der folgenden sind gültige HTTP-Methoden gemäß dem Inhalt der angegebenen URL?