|
|
Zeile 59: |
Zeile 59: |
| | UNLOCK || | | | UNLOCK || |
| |} | | |} |
|
| |
| === Argumentübertragung ===
| |
| Häufig will ein Nutzer Informationen an eine Website senden
| |
| * Dazu stellt HTTP prinzipiell zwei Möglichkeiten zur Verfügung:
| |
|
| |
| ==== HTTP-GET ====
| |
| Die Daten sind Teil der URL und bleiben deshalb beim Speichern oder der Weitergabe des Links erhalten
| |
| * Sie müssen [[URL Encoding|URL-kodiert]] werden, das heißt reservierte Zeichen müssen mit „%<[[Hexadezimalsystem|Hex-Wert]]>“ und Leerzeichen mit „+“ dargestellt werden
| |
| ; HTTP-POST
| |
| : Übertragung der Daten mit einer speziell dazu vorgesehenen Anfrageart im HTTP-Nachrichtenrumpf, so dass sie in der URL nicht sichtbar sind
| |
|
| |
| Hier werden die Parameter-Wertepaare durch das Zeichen ? in der [[Uniform Resource Locator|URL]] eingeleitet
| |
| Oft wird diese Vorgehensweise gewählt, um eine Liste von Parametern zu übertragen, die die Gegenstelle bei der Bearbeitung einer Anfrage berücksichtigen soll
| |
| * Häufig besteht diese Liste aus Wertepaaren, welche durch das &-Zeichen voneinander getrennt sind
| |
| * Die jeweiligen Wertepaare sind in der Form ''Parametername=Parameterwert'' aufgebaut
| |
| * Seltener wird das Zeichen ; zur Trennung von Einträgen der Liste benutzt
| |
|
| |
| ; Beispiel
| |
| * Auf der Startseite von Wikipedia wird in das Eingabefeld der Suche „Katzen“ eingegeben und auf die Schaltfläche „Artikel“ geklickt
| |
| * Der Browser sendet die folgende oder eine ähnliche Anfrage an den Server:
| |
|
| |
| <syntaxhighlight lang="text">
| |
| GET /wiki/Spezial:Search?search=Katzen&go=Artikel HTTP/1.1
| |
| Host: de.wikipedia.org
| |
| …
| |
| </syntaxhighlight>
| |
|
| |
| Dem Wikipedia-Server werden zwei Wertepaare übergeben:
| |
| {| class="wikitable"
| |
| !Argument
| |
| !Wert
| |
| |-
| |
| |search
| |
| |Katzen
| |
| |-
| |
| |go
| |
| |Artikel
| |
| |}
| |
|
| |
| Diese Wertepaare werden in der Form
| |
|
| |
| Parameter1=Wert1&Parameter2=Wert2
| |
|
| |
| mit vorangestelltem ? an die geforderte Seite angehängt
| |
|
| |
| Dadurch erfährt der Server, dass der Nutzer den Artikel ''[[Katzen]]'' betrachten will
| |
| * Der Server verarbeitet die Anfrage, sendet aber keine Datei, sondern leitet den Browser mit einem Location-[[Header]] zur richtigen Seite weiter, etwa mit:
| |
| <syntaxhighlight lang="http">
| |
| HTTP/1.0 302 Found
| |
| Date: Fri, 13 Jan 2006 15:12:44 GMT
| |
| Location: http://de.wikipedia.org/wiki/Katzen
| |
| …
| |
| </syntaxhighlight>
| |
| Der Browser befolgt diese Anweisung und sendet aufgrund der neuen Informationen eine neue Anfrage, etwa:
| |
|
| |
| <syntaxhighlight lang="http">
| |
| GET /wiki/Katzen HTTP/1.1
| |
| Host: de.wikipedia.org
| |
| …
| |
| </syntaxhighlight>
| |
|
| |
| Und der Server antwortet und gibt den Artikel ''Katzen'' aus, etwa:
| |
|
| |
| <syntaxhighlight lang="http">
| |
| HTTP/1.1 200 OK
| |
| Date: Fri, 13 Jan 2006 15:12:48 GMT
| |
| Last-Modified: Tue, 10 Jan 2006 11:18:20 GMT
| |
| Content-Language: de
| |
| Content-Type: text/html; charset=utf-8
| |
|
| |
| Die Katzen (Felidae) sind eine Familie aus der Ordnung der Raubtiere (Carnivora)
| |
| innerhalb der Überfamilie der Katzenartigen (Feloidea)
| |
| …
| |
| </syntaxhighlight>
| |
|
| |
| Der Datenteil ist meist länger, hier soll nur das Protokoll betrachtet werden
| |
|
| |
| Nachteil dieser Methode ist, dass die angegebenen Parameter mit der URL meist in der Historie des Browsers gespeichert werden und so persönliche Daten unbeabsichtigt im Browser gespeichert werden können
| |
| * Stattdessen sollte man in diesem Fall die Methode POST benutzen
| |
|
| |
| ==== HTTP POST ====
| |
| Da sich die Daten nicht in der URL befinden, können per POST große Datenmengen, zum Beispiel Bilder, übertragen werden
| |
|
| |
| Im folgenden Beispiel wird wieder der Artikel ''Katzen'' angefordert, doch diesmal verwendet der Browser aufgrund eines modifizierten HTML-Codes (method="POST") eine POST-Anfrage
| |
| * Die Variablen stehen dabei nicht in der URL, sondern gesondert im Rumpfteil, etwa:
| |
|
| |
| <syntaxhighlight lang="http">
| |
| POST /wiki/Spezial:Search HTTP/1.1
| |
| Host: de.wikipedia.org
| |
| Content-Type: application/x-www-form-urlencoded
| |
| Content-Length: 24
| |
|
| |
| search=Katzen&go=Artikel
| |
| </syntaxhighlight>
| |
|
| |
| Auch das versteht der Server und antwortet wieder mit beispielsweise folgendem Text:
| |
| <syntaxhighlight lang="http">
| |
| HTTP/1.1 302 Found
| |
| Date: Fri, 13 Jan 2006 15:32:43 GMT
| |
| Location: http://de.wikipedia.org/wiki/Katzen
| |
| …
| |
| </syntaxhighlight>
| |
|
| |
| <noinclude>
| |
|
| |
|
| == Anhang == | | == Anhang == |
HTTP/Methoden - Kurzbeschreibung
Beschreibung
Anfrage
Methode |
Beschreibung
|
GET |
Gebräuchlichste Methode
- Mit ihr wird eine Ressource (zum Beispiel eine Datei) unter Angabe eines URI vom Server angefordert
- Als Argumente in dem URI können auch Inhalte zum Server übertragen werden, allerdings soll laut Standard eine GET-Anfrage nur Daten abrufen und sonst keine Auswirkungen haben (wie Datenänderungen auf dem Server oder ausloggen). (siehe unten)
|
POST |
schickt Daten (z. B. den Inhalt einer Datei) zur weiteren Verarbeitung zum Server, diese werden als Inhalt der Nachricht übertragen und können beispielsweise aus Name-Wert-Paaren bestehen, die aus einem HTML-Formular stammen
- Es können so neue Ressourcen auf dem Server entstehen oder bestehende modifiziert werden
- POST-Daten werden im Allgemeinen nicht von Caches zwischengespeichert
- Zusätzlich können bei dieser Art der Übermittlung auch Daten wie in der GET-Methode an den URI gehängt werden. (siehe unten)
|
HEAD |
weist den Server an, die gleichen HTTP-Header wie bei GET, nicht jedoch den Nachrichtenrumpf mit dem eigentlichen Dokumentinhalt zu senden
- So kann zum Beispiel schnell die Gültigkeit einer Datei im Browser-Cache geprüft werden, und Dateigrößen können im Voraus abgerufen und durch die Content-Length-Zeile erlesen werden
|
PUT |
dient dazu, eine Ressource (zum Beispiel eine Datei) unter Angabe des Ziel-URIs auf einen Webserver hochzuladen
- Besteht unter der angegebenen Ziel-URI bereits eine Ressource, wird diese ersetzt, ansonsten neu erstellt
|
PATCH |
Ändert ein bestehendes Dokument ohne dieses wie bei PUT vollständig zu ersetzen
- Wurde durch RFC 5789 spezifiziert
|
DELETE |
löscht die angegebene Ressource auf dem Server
|
TRACE |
liefert die Anfrage so zurück, wie der Server sie empfangen hat
- So kann überprüft werden, ob und wie die Anfrage auf dem Weg zum Server verändert worden ist – sinnvoll für das Debugging von Verbindungen
|
OPTIONS |
liefert eine Liste der vom Server unterstützten Methoden und Merkmale
|
CONNECT |
wird von Proxyservern implementiert, die in der Lage sind, SSL-Tunnel zur Verfügung zu stellen
|
RESTful |
Web Services verwenden die unterschiedlichen Anfragemethoden zur Realisierung von Webservices
- Insbesondere werden dafür die HTTP-Anfragemethoden GET, POST, PUT/PATCH und DELETE verwendet
|
WebDAV
WebDAV fügt folgende Methoden hinzu
Methode |
Beschreibung
|
PROPFIND |
|
PROPPATCH |
|
MKCOL |
|
COPY |
|
MOVE |
|
LOCK |
|
UNLOCK |
|
Anhang
Siehe auch
Links
Weblinks