home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Wiederholung HTTP

HTTP ist ein zustandsloses Request-Replay-Protokoll. Es ist ein Protokoll der Anwendungsschicht (OSI-Schicht 7).

Aufbau eines Requests

Ein Request besteht aus einer Requestzeile und einem Header. Die Requestzeile umfasst die Methode, die (relative) URI und das Protokoll.

Beispiel:

 

GET /Servlets/SimpleServlet HTTP/1.1

 

HTTP kennt die Methoden, GET, POST, DELETE und PUT. Die beiden letzteren sind weniger bekannt, da sie auf den meisten Webservern aus Sicherheitsgründen nicht ausgeführt werden.

Der Header beinhaltet

     

  • Host, an den die Anfrage geht
  • Informationen über den Browser (optional)
  • Akzeptierte MIME-Types (optional)
  • Akzeptierte Zeichensätze (optional)
  • "If-Modified-Since" (Datum, ab dem Dokumente verlangt werden) (optional)
  • weitere optionale

Beispiel:

 

Host: 192.168.1.220:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6)
Gecko/20040206 Firefox/0.8
Accept: application/x-shockwave-flash,text/xml,application/xml,
application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,
video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

 

Die Get-Methode erkennt man daran, dass an die URL ein Fragezeichen angehängt wird, dem die durch das Kaufmanns-Und getrennte Wertepaare folgen: Beispiel:

 

http://adomain.com?name="Gerda"&alter="73"

 

Vor dem Hinweis in manchen Büchern, dass man die POST-Methode nutzen sollte, um Passwörter zu übertragen, muss allerdings gewarnt werden. Zwar sieht man dann das Passwort nicht mehr im Klartext in der URL, es wird aber im Klartext im Header des Requests übertragen und kann mit jedem Sniffer wie Ethereal ausgelesen werden.

Welche Methode auf dem Server aufgerufen wird, entscheidet beispielsweise das HTML-Formular. Im folgenden Beispiel wäre es die GET-Methode:

 

<form action="/Servlets/TestServlet" method="GET">...</form> 

 

 

Aufbau eines Response

Der Response besteht ebenfalls aus einer Responsezeile, dem Header und einem optionalen Body.

Die Responsezeile besteht aus Protokoll, Statuscode und Beschreibung des Statuscodes.

Beispiel:

 

HTTP/1.1 200 OK

 

Die Statuscodes sind in Hunderterschritten gruppiert:

     

  • 200: OK
  • 3XX: Temporärer Fehler, Redirect
  • 4XX: Clientfehler, z.B. 404 NOT FOUND
  • 5XX: Serverfehler, z.B. 500 unerwarteter Serverfehler (beispielsweise weil CGI-Skript fehlerhaft)

Der Header enthält Informationen über den Server wie

     

  • Datum der letzten Änderung
  • Art des Inhalts (Content-typ)
  • Länge des Inhalts, falls im Body folgend
  • Servertyp

Beispiel:

 

Content-Type: text/html;charset=ISO-8859-1
Content-Length: 48
Date: Sat, 04 Dec 2004 13:37:57 GMT
Server: Apache-Coyote/1.1

 

Der Body schließlich transportiert die eigentliche Nutzlast, beispielsweise den HTML-Text.

Beispiel:

 

<html><body>Hallo</body></html>