Home
Navigation
Impressum
Coder Welten - Programmierung und Optimierung
Coder Welten
 
 

 

 

HTTP: Request und Response

Kommunikation zwischen Clients und Servern

Wer im Internet unterwegs ist, um nach Informationen zu suchen, Preisvergleiche durchzuführen, Einkäufe zu erledigen oder sich mit Gleichgesinnten auszutauschen, wird sich kaum des Umstands bewusst, dass im Hintergrund ein reger Datenaustausch zwischen dem Browser seines Endgerätes und mindestens einem Server abläuft. Ohne diesen Datenaustausch wäre eine Kommunikation zwischen Clients und Servern nicht möglich.
Obwohl ein Durchschnitts-User im eigenen Interesse dem Thema Datenschutz nicht völlig ahnungslos und desinteressiert gegenüberstehen sollte, mit der technischen Umsetzung brauchen sich dennoch nur Entwickler, Programmierer und IT-Spezialisten auseinander zu setzen.
Entwickler und Programmierer von Webanwendungen sollten sich hingegen gut mit den Datenaustausch zwischen Clients und Servern auskennen, der wechselseitig erfolgt und aus Anfragen und Antworten besteht, die allgemein als Requests und Responses bezeichnet werden.

Der Datenaustausch und die Kommunikation erfolgt im einfachsten Fall zwischen einem Webbrowser als Client und einem Server, auf dem die gewünschten Informationen eingebettet in einer HTML-Datei zum Abruf bereitliegen. Doch auch der Server kann zum Client werden, zum Beispiel dann, wenn die HTML-Datei dynamisch erzeugt wird und der gewünschte Inhalt der HTML-Seite vor dem Parsen erst von einem anderen Server per XML angefordert werden muss. Für die Beispiele auf dieser Seite soll jedoch als Client ein Webbrowser genügen, in dem die URI einer aufzurufenden Seite eingegeben und mit einem Klick bestätigt wird.

HTTP Request

Bei Eingabe einer URI in der Adresszeile eines Browsers und einem bestätigenden Klick oder bei einem Klick auf einen Link innerhalb einer HTML-Webseite, sendet der Browser (Client) eine Anfrage (Request) an den Server. Für die Übertragung wird dabei das HTTP Protokoll genutzt (insofern nicht HTTPS vorgesehen ist) und für den Transport das TCP Protokoll. Der vom Browser gesendete HTTP-Header der Anfrage ist wie folgt aufgebaut, wobei weitere Angaben möglich sind:

GET /request-und-response-18.html HTTP/1.1
Host: www.coder-welten.de
User-Agent: Mozilla/5.0 (weitere Angaben ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

Die Zeilen des Request-Headers im Einzelnen:

  1. Anfragemethode / Pfad der Ressource Protokoll/Version
  2. Der Host entspricht dem Namen der Domain, doch wird für diesen vor der Übertragung die jeweilige IP-Adresse ausgelöst.
  3. User-Agent enthält Angaben über den verwendeten Client-Browser.
  4. Vom Client akzeptierte Mime-Typen und Qualitätsfaktoren (q) auf einer Skala von 0 bis 1.
  5. Vom Client akzeptierte Sprachen und Qualitätsfaktoren (q) auf einer Skala von 0 bis 1.
  6. Vom Client-Browser akzeptierte Kodierungsarten.
  7. Persistente Verbindung für mehrere Anfragen. Weitere Hinweise zu diesem Punkt unter Response-Header.

Für die Anfrage wurde die GET-Methode verwendet, da diese Methode es erlaubt, mit der URI dem Webserver weitere Daten zu übermitteln. Die zusätzlichen Daten werden dabei als Parameter-Werte Paare in einem QueryString verpackt. Der QueryString mit den Parameter-Werte Paaren wird der URI, getrennt durch ein Fragezeichen, hinzugefügt.

HTTP Response

Nachdem ein Server eine Anfrage erhalten hat, wird er diese beantworten, in dem eine entsprechende Nachricht an den Browser übermittelt wird. Diese Antwort besteht im einfachsten Fall nur aus einem HTTP Response-Header, der unter anderen den HTTP-Statuscode enthält. Der Statuscode wird auch bei auftretenden Fehlern, Zugriffsverletzungen oder bei Weiterleitungen gesendet. Ist die vom Browser gewünschte Ressource hingegen verfügbar, wird diese im Body der Antwort übermittelt. Der HTTP Response-Header (Message-Header) und der HTTP Response-Body (Message-Body) werden lediglich durch eine Leerzeile getrennt übermittelt. Ein Beispiel:

HTTP/1.1 200 OK
Date: Mon, 11 Mar 2013 11:17:09 GMT
Server: Apache
X-Powered-By: PHP/5.3.8
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 832
Keep-Alive: timeout=1, max=100
Connection: Keep-Alive
Content-Type: text/htm

<!DOCTYPE html>
<html>

<head>
<title>Eine HTML-Seite</title>
</head>

<body>
<div style="text-align:center">
<h1>Eine HTML-Seite</h1>
<p>Mit wenig oder viel Content.</p>
</div>
</body>
</html>

Die Zeilen des Response-Headers im Einzelnen:

  1. HTTP-Protokoll/Version / HTTP-Statuscode
  2. Datum und Zeitpunkt
  3. Angaben zur verwendeten Server-Software
  4. Angaben zur PHP-Version (Entfällt bei HTML-Seiten, die nur Hypertext enthalten und nicht geparst werden oder wenn diese Angaben unterdrückt werden.)
  5. Bezieht sich auf die Behandlung von Cache
  6. Kodierung des Inhalts der gesendeten Nachricht
  7. Länge des Contents der gesendeten Nachricht in Bytes
  8. Den hinter Keep-Alive folgenden Attributen werden die Werte für persistente Verbindungen zugeordnet, so dass zwischen Browser und Server nicht bei jeder einzelnen Anfrage eine neue Verbindung aufgebaut werden muss. Im Beispiel beträgt die Wartezeit zwischen zwei Request 1 Sekunde, ehe die Verbindung abgebrochen wird, falls in dieser Zeit keine neue Anfrage gesendet wurde. Weiterhin können im Beispiel bis zu 100 Anfragen gesendet werden, ehe die Verbindung beendet wird.
  9. Vom Server bevorzugte Verbindungsart
  10. Content-Type: Mime-Typ der gesendeten Nachricht

Wie bereits erwähnt, folgt nach dem Response-Header eine Leerzeile, an der sich der HTTP Response-Body mit dem übermittelten Inhalt der Nachricht anschließt. Bei einer Webseite besteht dieser Inhalt aus HTML oder einer erweiterten Auszeich­nungs­sprache.

 
Navigation

Kleines Glossar

 



 

Weitere Themen

Übersicht


Copyright © Verlag Horst Müller - Stendal - 2006 - Impressum - Datenschutz - Nutzungsbedingungen