HTTP - Anfragen
Ein HTTP-Client sendet eine HTTP-Anforderung in Form einer Anforderungsnachricht an einen Server, die das folgende Format enthält:
- A Request-line
- Zero or more header (General|Request|Entity) fields followed by CRLF
- An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
- Optionally a message-body
In den folgenden Abschnitten werden die in einer HTTP-Anforderungsnachricht verwendeten Entitäten erläutert.
Request-Line
Die Anforderungszeile beginnt mit einem Methoden-Token, gefolgt von der Anforderungs-URI und der Protokollversion, und endet mit CRLF. Die Elemente sind durch Leerzeichen SP getrennt.
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Lassen Sie uns jeden der in der Anforderungszeile genannten Teile diskutieren.
Anforderungsmethode
Die Anfrage method gibt die Methode an, die für die durch die angegebene Ressource identifizierte Ressource ausgeführt werden soll Request-URI. Die Methode unterscheidet zwischen Groß- und Kleinschreibung und sollte immer in Großbuchstaben angegeben werden. In der folgenden Tabelle sind alle in HTTP / 1.1 unterstützten Methoden aufgeführt.
SN | Methode und Beschreibung |
---|---|
1 | GET Die GET-Methode wird verwendet, um Informationen von dem angegebenen Server unter Verwendung eines bestimmten URI abzurufen. Anforderungen, die GET verwenden, sollten nur Daten abrufen und keine anderen Auswirkungen auf die Daten haben. |
2 | HEAD Wie GET, überträgt jedoch nur die Statuszeile und den Header-Bereich. |
3 | POST Eine POST-Anforderung wird verwendet, um Daten an den Server zu senden, z. B. Kundeninformationen, Datei-Upload usw. mithilfe von HTML-Formularen. |
4 | PUT Ersetzt alle aktuellen Darstellungen der Zielressource durch den hochgeladenen Inhalt. |
5 | DELETE Entfernt alle aktuellen Darstellungen der vom URI angegebenen Zielressource. |
6 | CONNECT Richtet einen Tunnel zum Server ein, der durch einen bestimmten URI identifiziert wird. |
7 | OPTIONS Beschreiben der Kommunikationsoptionen für die Zielressource. |
8 | TRACE Führt einen Nachrichtenschleifen-Rücktest zusammen mit dem Pfad zur Zielressource durch. |
Request-URI
Der Anforderungs-URI ist eine einheitliche Ressourcenkennung und gibt die Ressource an, auf die die Anforderung angewendet werden soll. Im Folgenden sind die am häufigsten verwendeten Formulare zum Angeben eines URI aufgeführt:
Request-URI = "*" | absoluteURI | abs_path | authority
SN | Methode und Beschreibung |
---|---|
1 | Das Sternchen *wird verwendet, wenn eine HTTP-Anforderung nicht für eine bestimmte Ressource, sondern für den Server selbst gilt, und ist nur zulässig, wenn die verwendete Methode nicht unbedingt für eine Ressource gilt. Zum Beispiel: OPTIONS * HTTP/1.1 |
2 | Das absoluteURIwird verwendet, wenn eine HTTP-Anforderung an einen Proxy gesendet wird. Der Proxy wird aufgefordert, die Anforderung oder den Dienst aus einem gültigen Cache weiterzuleiten und die Antwort zurückzugeben. Zum Beispiel: GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
3 | Die häufigste Form von Request-URI ist die, mit der eine Ressource auf einem Ursprungsserver oder Gateway identifiziert wird. Beispielsweise würde ein Client, der eine Ressource direkt vom Ursprungsserver abrufen möchte, eine TCP-Verbindung zu Port 80 des Hosts "www.w3.org" herstellen und die folgenden Zeilen senden: GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org Beachten Sie, dass der absolute Pfad nicht leer sein darf. Wenn in der ursprünglichen URI keine vorhanden ist, MUSS diese als "/" (Serverstamm) angegeben werden. |
Header-Felder anfordern
Wir werden General-Header und Entity-Header in einem separaten Kapitel untersuchen, wenn wir HTTP-Header-Felder lernen. Lassen Sie uns zunächst überprüfen, welche Anforderungsheaderfelder vorhanden sind.
In den Anforderungsheaderfeldern kann der Client zusätzliche Informationen zur Anforderung und zum Client selbst an den Server übergeben. Diese Felder dienen als Anforderungsmodifikatoren. Hier finden Sie eine Liste einiger wichtiger Anforderungsheaderfelder, die je nach Anforderung verwendet werden können:
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referer
TE
User-Agent
Sie können Ihre benutzerdefinierten Felder einführen, falls Sie Ihren eigenen benutzerdefinierten Client und Webserver schreiben möchten.
Beispiele für Anforderungsnachrichten
Lassen Sie uns nun alles zusammenfügen, um eine HTTP-Anforderung zum Abrufen zu bilden hello.htm Seite vom Webserver, der auf tutorialspoint.com ausgeführt wird
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Hier senden wir keine Anforderungsdaten an den Server, da wir eine einfache HTML-Seite vom Server abrufen. Die Verbindung ist ein allgemeiner Header, und der Rest der Header sind Anforderungsheader. Das folgende Beispiel zeigt, wie Formulardaten mithilfe des Anforderungsnachrichtentexts an den Server gesendet werden:
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID=string&content=string&/paramsXML=string
Hier wird die angegebene URL /cgi-bin/process.cgi verwendet, um die übergebenen Daten zu verarbeiten, und dementsprechend wird eine Antwort zurückgegeben. Hiercontent-type teilt dem Server mit, dass die übergebenen Daten einfache Webformulardaten sind und lengthwird die tatsächliche Länge der Daten sein, die in den Nachrichtentext eingegeben werden. Das folgende Beispiel zeigt, wie Sie einfaches XML an Ihren Webserver übergeben können:
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>