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>