HTTP

Webseiten mit dem Hypertext Transfer Protocol

Das HTTP-Protokoll legt die Regeln fest, nach denen im Internet Webseiten und andere Objekte angefordert und zugestellt werden.
HTTP ist ein Offener Standard und kann lizenzfrei verwendet werden.
HTTP ist vergleichsweise einfach, und hat sich (gerade deshalb) in der Praxis außerordentlich bewährt.
Jedes Browser-Programm 'versteht' HTTP. Daher können die gleichen Webseiten von jedem Browser auf jedem Betriebssystem angefordert werden.
Internet Protokolle und Dienste der OSI-Anwendungs-Schicht
Grundlagen Browser und Webserver
Verbindung Client-PC - TCP/IP - Server-PC
HTTP-Request Auftrag vom Browser an den Webserver (Details & Programmierung)
HTTP-Response Ankündigung der Daten vom Webserver an den Browser (Details)
HTTP Status Code ZahlenCode zum Erfolg einer Browser-Anfrage
Daten Die angeforderten Daten vom Webserver an den Browser
Werkzeug Werkzeug zur HTTP-Analyse: Browser, cURL, wGET, wPUT, ...
Verwandte Themen Programmierung von HTTP-Request und HTTP-(Response)-Header, Ajax (HTTP-Anforderung durch Javascript-Programme), Webseiten mit Perl-Programmen oder PHP-Programmen lesen
Links Ausgewählte Links Links zum Thema 'HTTP'

Grundlagen, Browser und Webserver

Jedes Kind kann heute mit einem Browser-Programm Webseiten besuchen, meist schon bevor es Lesen und Schreiben kann.

Das beweist, wie genial die Idee von Tim Berners-Lee war, der 1989 das HTTP-Protokoll und die "Programmiersprache" HTML entwickelte und damit das World Wide Web erfand.

Eine Kopie der weltweit ersten Webseite http://info.cern.ch  von Tim Berners-Lee.
Tim Berners-Lee Tim Berners-Lee, der "Erfinder" von HTML und HTTP, und damit des World Wide Web, heute Direktor des W3C.
Quelle: W3C

Sonderfall - Datei öffnen

In seltenen Fällen werden mit einem Browser Dateien am eigenen PC geöffnet. Man kann eine Datei wie z.B.
index.html
mit Doppelklick oder mit Menü-Befehlen öffnen und als Webseite anzeigen.

Für Dateien am eigenen PC ist das Dateisystem zuständig, daher entfällt in diesem Fall die Kommunikation über ein Netzwerk. - Das HTTP Protokoll wird daher in diesem Fall nicht benutzt.

Die Adresszeile ihres Browsers beginnt in diesem Fall mit file:// und nicht mit http://

In diesem Fall kann man besonders leicht einen anderen Aspekt von HTTP/HTML überprüfen:
Öffnen sie eine Datei *.htm am eigenen PC mit einem Text-Editor (z.B. notepad.exe). Sie sehen, dass der Inhalt aus reinem Text (text/plain) besteht, durchsetzt mit Anweisungen in < > Klammern.

Der angezeigte Text ist in → HTML abgefasst, der 'Programmiersprache' des Internet, ebenfalls einer ziemlich genialen Entwicklung von Tim Berners-Lee.
Der gleiche Text wird angezeigt, wenn sie die Webseite mit einem Browser öffnen und (mit Rechtsklick in den Text) den Befehl zur Anzeige von "Quelltext" geben.

Standard - Anforderung einer Webseite

Wenn sie eine Internet-Adresse (URL) in die Adresszeile ihres Browsers eintragen, oder wenn sie einen Link anklicken, dann wird das HTTP-Protokoll verwendet, um die gewünschte Webseite zu ihrem PC zu transportieren.

Eine typische Webseite demo.html durchläuft diesen Standard-Weg:
Sie wird von ihrem Browser mit einem ↓ HTTP-Request angefordert.
Die Anforderung wird über Netzwerk bzw. Internet zum zuständigen → Webserver geleitet.
Der Webserver sendet den in der Datei demo.html enthaltenen Text an ihren PC - genauer an die → IP-Adresse des Request-Absenders.
Das Betriebssystem ihres PC übergibt die empfangenen Daten an ihren Browser (dazu wird das → Port-Konzept verwendet).
Ihr Browser erhält den HTML-Quelltext, erzeugtc daraus das Bild der Webseite und sendet es an ihren Monitor.

Der gesamte Vorgang ist relativ komplex, wird jedoch nach dem → OSI-Modell in kleine, überschaubare Teil-Aufgaben zerlegt, von denen jede vergleichsweise einfach darzustellen ist.

Wichtig ist die Erkenntnis, dass zur Anzeige von Webseiten im Internet ausschließlich reiner Text transportiert wird. Erst der Browser erzeugt aus dem empfangenen HTML-Quelltext ein Bild (Webseite) am PC-Monitor. Wenn eine Webseite Verweise auf andere Objekte enthält (z.B. Bilder), dann werden diese anschließend einzeln angefordert und in die Seite eingebettet. Solche Objekte können auch binäre Daten enthalten.

Die Kapitel dieser Seite stellen einige Aspekte des HTTP-Protokolls vor. Wenn alle Teile erwartungsgemäß funktionieren, dann wird die gewünschte Webseite von der richtigen Stelle angefordert, über das Internet zu ihrem PC transportiert und vom Browser angezeigt.

Verbindung

Es ist trivial, dass ein PC Verbindung zum Internet haben muss, damit man Webseiten ansehen kann. Mindestens zu einem Webserver im eigenen lokalen Netzwerk (LAN) muss eine Verbindung bestehen, damit man die dort verfügbaren Webseiten ansehen kann. Der Auftrag zur Herstellung der Verbindung wird an Konponenten aus tiefer liegenden → OSI-Schichten erteilt, in diesem Fall an → TCP und in der Folge an → IP und → Ethernet.
TCP (Transmission Control Protocol) stellt einen Daten-Kanal zwischen zwei Netzwerk-Endpunkten (Sockets) her = Zwischen ihrem PC + Browser und dem PC eines Internet Providers + Webserver. Der Daten-Kanal funktioniert in beide Richtungen:
Zuerst wird die Anforderung ( HTTP-Request ↓ ) ihres Browsers übertragen, danach als Antwort des Webservers der ↓ HTTP-Header und als ↓ HTTP-Daten der HTML-Quelltext der angeforderten Webseite.

TCP erkennt, ob Daten vollständig sind, kann einfache Übertragungs-Fehler erkennen und meist auch beheben (nochmals anfordern), und setzt die empfangenen Daten-Pakete in der richtigen Reihenfolge zusammen. Für den eigentlichen Daten-Transport stützt sich TCP auf das → IP-Protokoll, das im → OSI-Modell in der nächst tieferen Schicht liegt.

Details zu Ethernet, IP, Port, TCP, DHCP, Router, ...

Fehler

Die Erfahrung zeigt, dass nicht jede angeforderte Webseite tatsächlich geöffnet wird.
Das kann an grundlegenden Problemen der Endgeräte liegen, wenn z.B. PC oder Webserver defekt oder falsch konfiguriert sind.
Meistens funktionieren jedoch beide Endgeräte. In diesem Fall kann es vorkommen, dass die Adresse (URL, Domain Name, IP-Adresse) des Webservers unerreichbar ist (Tippfehler, technische Probleme,...)
TCP erkennt solche Fehler, weil ein Timeout eintritt: Innerhalb der vorgegebenen Zeit trifft keine Antwort ein. Sie erhalten eine einfache Fehler-Webseite von jenem Programm, welches den Fehler erkannt hat, z.B. vom → Router / Proxy-Server oder von ihrem Browser.
Wenn der richtige Webserver erreicht wurde, die angeforderte Datei jedoch nicht liefern kann oder darf, dann sendet der Server als Antwort eine Fehler-Webseite.
Tipp: Auch von Fehler-Webseiten kann man (mit Rechtsklick) den HTML-Quelltext anzeigen.

History & Session-Daten

Nachdem sie alle Daten ihrer Anforderung erhalten haben, wird der TCP/IP Daten-Kanal normalerweise wieder geschlossen.
(Hinweis Connection:close im ↓ HTTP-Header ).

Wenn sie vom gleichen Server weitere Daten anfordern, wird wieder eine neue Verbindung aufgebaut. HTTP kennt keine Geschichte (History, Erinnerung).

Falls eine Erinnerung erwünscht ist, müssen daher auf anderen Wegen eigene "Session-Daten" gespeichert werden, entweder auf dem Webserver oder auf ihrem eigenen PC.

Auch ihr Browser speichert solche Daten, z.B. als Liste der besuchten Seiten (History), als Favoriten oder auf Wunsch Namen, Passworte oder andere Formular-Daten (gefährlich !).
Programmier-Sprachern wie → PHP bieten eigene Funktionen zur Verwaltung von → Session-Daten am Webserver.

Eine weitere Möglichkeit sind Cookies. Mit ihrer Hilfe kann der Webserver BesucherInnen wieder-erkennen und z.B. ihre früher eingestellten privaten Optionen automatisch einrichten. Cookies können keine Viren transportieren und auch nicht zur Spionage verwendet werden.

HTTP-Anforderung (Request)

Wenn mit TCP eine Verbindung aufgebaut wurde, dann sendet ihr Browser eine Anfrage an den Webserver. Die Anfrage (Request) ist ein nach HTTP-Regeln aufgebauter einfacher Text (text/plain). Die Verwendung von einfachem Text macht das HTTP-Protokoll besonders einfach, andererseits ist auch das unbefugte Abhören der Daten-Pakete einfach.
Die benötigte PHP-Funktion apache2handler() ist am Webserver nicht verfügbar.
Simulation jenes HTTP-Request, mit dem ihr Browser diese Webseite angefordert hat:
GET http://www.topsoft.at/pstrainer/system/netzwerk/internet/http.php HTTP/1.1
User-Agent: CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Host: www.topsoft.at
Accept: text/xml, text/html, image/png, image/jpeg, image/gif
Accept-Language: de
Referer: http://www.topsoft.at/pstrainer/system/netzwerk/internet/internet.html
Connection: Keep-Alive
Der eigentliche HTTP-Request befindet sich bereits in der ersten Zeile ( GET... ). Damit wird festgelegt, welche Datei angefordert wird, und welche Version des HTTP-Protokolls verwendet werden soll.

Alle übrigen Zeilen beschreiben optional weitere Wünsche des Browsers. Sie enthalten je eine Header-Variable in der Form name: wert

Zusätzlich ist in der Verpackung des Daten-Pakets (hier nicht sichtbar) als Absender die → IP-Adresse ihres PC und der → Port (Weg zum Empfangs-Programm = Browser) enthalten:
38.107.179.212:49400
Mit den Header-Variablen gibt der Browser seine Identität (User-Agent) bekannt, sowie seine Möglichkeiten zur Verarbeitung von Daten.
Das sind Wünsche, an die sich der Webserver nicht halten muss.

Anzahl und Reihenfolge der Header-Variablen sind je nach Browser und Version (leider) etwas unterschiedlich. Unklare oder unbekannte Wünsche werden von jedem Webserver einfach ignoriert.
Am anderen Ende des mit TCP/IP aufgebauten Daten-Kanals "lauscht" ein Webserver auf HTTP-Aufträge. Ein Webserver hat als typisches Server-Programm keine Oberfläche, d.h. der Server arbeitet im 'Hintergrund', ohne jedes Bedienungs-Fenster.

Port

Da am Server-PC viele verschiedene Daten-Pakete ankommen, muss ein Filter dafür sorgen, dass HTTP-Anfragen an das Webserver-Programm geleitet werden. Diese Aufgabe wird vom → Port-Konzept erfüllt.
Jedem zum Daten-Empfang bereiten Programm wird vom Betriebssystem ein Port zugewiesen, das ist so etwas wie eine virtuelle Sub-Adresse der → IP-Adresse.
Server-Programme erhalten einen fixen Port zugewiesen, das ist beim Webserver Port 80.

Auch bei ihrem PC treffen viele verschiedene Daten ein. Ihr Betriebssystem vergibt an jedes für den Empfang bereite Programm Port-Nummern. Auch ihr Browser sendet und empfängt Daten auf einem oder mehreren Ports.

Details zu den Themen IP und Port

Um eine HTTP-Anfrage an eine Domain- oder IP-Adresse zu richten, können sie daher wahlweise Port 80 adressieren, oder den Port (Zahl nach dem Doppelpunkt) freilassen.
In speziellen Fällen kann man einem Webserver auch einen anderen Port (z.B. 8000 oder 8080) zugeweisen. In diesem Fall muss der Port in der Anfrage (Request) enthalten sein.
Beispiele (ohne / mit Port-Angabe):
Live-Daten dieser Verbindung: (IP-Adresse : Port)
Ihr PC:Browser-Port 38.107.179.212:49400
Server-PC:Webserver-Port 192.168.255.11:80

Router oder Proxy-Server

Wenn ihr PC nicht direkt sondern über einen Router oder Proxy-Server mit dem Internet verbunden ist, dann sendet ihr Browser eine geringfügig anders formulierte Anfrage. Erst durch den Router wird die Anfrage in einen HTTP-Request umgesetzt. Umgekehrt empfängt zuerst der Router die ankommenden Daten und leitet sie an ihren PC weiter.
Details zur Router-Funktion

Telnet und cURL

Jedes gängige Betriebssystem bietet das → Konsolen-Programm telnet
Obwohl mittlerweile veraltet, kann man damit manuell (!) einen HTTP-Request an einen beliebigen Webserver (im eigenen LAN oder im Internet) senden.
Diese Methode eignet sich gut zur Fehler-Suche und für Lern-Zwecke.
Windows enthält ab Vista, 7 leider kein telnet.exe. Man kann das Programm von Windows XP kopieren.
Für Ausbildung, Experimente und Debugging besser geeignet ist das Konsolern-Programm ↓ cURL (kostenfrei für alle gängigen Betriebssysteme und auch als PHP-Modul).

Spionage

Im Internet sind zahlreiche Programme (Packet-Sniffer, -Monitor, WireShark, ...) verfügbar, mit denen man alle (!) im lokalen Netzwerk transportierten Daten-Pakete analysieren kann.
Diese Programme erfordern meist einige technische Kenntnisse, sind jedoch zur Fehler-Suche und für Lern-Zwecke gut geeignet.

Programmierung

Moderne (Server)-Programmiersprachen wie → Perl oder → PHP bieten sowohl die Möglichkeit, einlangende HTTP Requests zu analysieren als auch beliebige HTTP-Requests an entfernte Webserver zu senden.

Daten aus dem HTTP-Header der Browser-Anforderung werden nur selten verwendet.
Man kann die Angaben dazu verwenden, um dynamische Webseiten (oder andere Produkte, z.B. Grafik) nach den Fähigkeiten des Browsers zu gestalten, oder sie in einer bevorzugten Sprache anzeigen.
Umgebungs-Daten von Perl, PHP, ...

Es ist relativ einfach, den HTTP Request-Header mit einem Programm zu manipulieren. Das ist jedoch kaum sinnvoll, da Webserver genau aus diesem Grund den darin enthaltenen Daten wenig vertrauen, und sie in zweifelhaften Fällen einfach ignorieren.

Details zur Programmierung des HTTP-Requests.

HTTP Response-Header: Ankündigung der eintreffenden Daten

Vor den angeforderten Daten sendet der Webserver an ihren Browser einen kurzen Text-Block als Ankündigung, den HTTP Response-Header. Darin sind Angaben zu den nachfolgenden Daten enthalten, z.B. deren Länge, → MIME-Type (z.B. HTML-Quelltext, Grafik, ...). Die Header-Daten werden auf normalen Webseiten nicht angezeigt.
Live-HTTP-Header: Diesen Text-Block sendet der Webserver auf ihre Anfrage nach der Webseite
http://www.topsoft.at/pstrainer/demo/html/demo.htm

Bei der Analyse des HTTP-Headers trat ein Fehler auf.
(Keine Verbindung, Behinderung durch Firewall, ... ?
Simulation:

HTTP/1.1 200 OK
Date: Tue, 22 May 2012 23:13:26 GMT
Server: Apache/2.3.0 (Linux/SUSE)
Last-Modified: Sun, 01 Apr 2012 00:00:00 GMT
ETag: "12a0b-cd-98765e00"
Accept-Ranges: bytes
Content-Length: 190
Connection: close
Content-Type: text/html

Anschließend folgen die angeforderten Daten ↓   =   Der HTML-Quelltext der angeforderten Webseite:
<html>...</html>
Die erste Header-Zeile enthält immer den Code HTTP gefolgt von der Version und einem Status-Code (100...999).
Beispiel: Status-Code=200 bedeutet 'OK', Status-Code=404 bedeutet 'Nicht gefunden'.

Wenn der Webserver einen Auftrag nicht erfüllen kann, dann sendet er eine Fehler-Seite - ebenfalls eine HTML Webseite !
Wenn vom Webserver überhaupt keine Antwort kommt, dann zeigt ihr Browser eine eigene Fehler-Seite an - ebenfalls eine HTML Webseite.
Details zum HTTP Status Code
Danach folgen einige Header-Variablen in der Form name: wert
Sie geben dem Browser weitere Hinweise zu den nachfolgenden Daten.
Wichtig für den Browser sind Type (Content-Type) und Länge (Content-Length) der nachfolgenden Daten.

Details zur Programmierung von HTTP-Response-Headers.

MIME-Type

Der Browser benötigt Angaben über die nachfolgenden Daten, z.B. ob es sich dabei um HTML-Quelltext oder um ein Bild handelt.
Der → MIME-Standard definiert einen eindeutigen Code für jede Type, z.B. text/html für Webseiten oder image/jpeg für JPEG Pixel-Grafik.
Im HTTP-Header wird die Standard MIME-Type der nachfolgenden Daten in der Variablen Content-Type angekündigt.
Details zum MIME-Type Standard

Windows-AnwenderInnen sind gewohnt, diese Information aus dem Namen der Datei, genauer aus der "Datei-Erweiterung" zu beziehen. Windows ist das einzige Betriebssystem, welches Dateinamen mit Punkt und Typen-Code benötigt (Ein Relikt aus dem DOS-Betriebssystem). Alle anderen Systeme (Linux, ...) können Dateien mit beliebigen Namen verwenden - darunter natürlich auch mit Windows-Erweiterung.
Die Beschreibung der Daten-Type mit dem Datei-Namen funktioniert jedoch in vielen Fällen nicht korrekt, d.h. so wie für den Browser erforderlich.
Dynamische Produkte (Webseiten, Grafik, Sound, ...) werden genau nach Anfrage Live am Webserver erzeugt.
Typische Beispiele sind die Antwort-Seiten von Such-Maschinen wie Google, Lycos oder Yahoo.
Die angeforderte Datei ist in diesem Fall ein Programm (z.B. mit Namen wie *.php oder *.pl ).

Dieses Programm erzeugt Live am Webserver ein Produkt in einer von vielen unterschiedlichen Typen.
Die erzeugte Daten-Type wird in der Header-Variablen Content-Type nach MIME-Standard angekündigt.
Die Produkte des IT-Marktführers (allen voran der M$IE Browser) ignorieren die MIME-Type konsequent. Daher muss man zusätzlich zur Ankündigung der MIME-Type auch den Datei-Namen nach M$-Wunsch gestalten.
Das ist in einfachen Fällen zwar lästig, aber noch kein Problem: Statische Webseiten müssen mit *.htm oder *.html benannt werden usw.

Leider ist die Realität noch absurder: Der M$IE Browser schnüffelt sogar im Text der erhaltenen Daten, versucht daraus die Type zu erkennen, und verwendet diese zwangsweise und ohne Hinweis.

Man muss viel Zeit und Geld dafür aufgewenden, um diese Fehler zu kompensieren - allerdings nur solange der Marktanteil dieses Herstellers noch relativ hoch ist ...

Datum und Zeit

Der HTTP-Header enthält die Variablen Date und Last-Modified
Die Angaben erfolgen normalerweise in → Weltzeit UTC (früher GMT). Sie unterscheiden sich daher in Mitteleuropa von der PC-Zeit um -1 h, bei Sommerzeit um -2 h, derzeit um -2 Stunde h.

Die Server-Zeit ist bei guten Providern recht zuverlässig. Man kann sie daher zur einfachen Synchronisation der System-Uhr des eigenen PC verwenden.
Das Verfahren ist besonders einfach, erfordert jedoch die Installation von Perl oder PHP (ohnehin für anspruchsvolle AnwenderInnen empfohlen).
Der Bezug der Server-Zeit erfordert nicht einmal eine funktionierende Webseite, da die Variable Date auch in jeder Fehler-Seite enthalten ist.
Details zur Zeit-Synchronisation (NTP)

HTTP Empfangs-Daten

Nach dem ↑ HTTP Response-Header sendet der Webserver die angeforderten Daten an den Browser. Im Falle einer Webseite ist das der HTML-Quelltext. Im Live-Beispiel wurde eine Minimal-Webseite angefordert, um die Daten kurz und übersichtlich zu halten.
Live-Daten nach Anforderung der Webseite
http://www.topsoft.at/pstrainer/demo/html/demo.htm

Fehler beim Versuch die HTTP-Daten anzuzeigen.
Simulation
<html>
<head>
<title>Demo Webseite</title>
</head>
<body>
<h2>Demo - Webseite</h2>
Dies ist die Minimal-Webseite 'demo.htm'.
</body>
</html>
Live-Darstellung der gleichen Webseite durch ihren Browser:
Mit Rechtsklick in die angezeigte Mini-Seite können sie den Quelltext darstellen.
Der Text wurde mit HTTP-Protokoll an ihren Browser gesendet - Er wird links angezeigt.

Daten-Pakete

Bei größerer Länge der Daten werden diese in mehreren → Paketen gesendet. In diesem Fall erhält ihr PC mehrere Pakete zu einer HTTP-Anforderung. Da der Server alle Daten nicht nur an die IP-Adresse ihres PC sondern auch an den gleichen Port sendet, gelangen diese Pakete selektiv zu ihrem Browser.

Die einzelnen Daten-Pakete reisen unabhängig voneinander, d.h. sie können auf verschiedenen Wegen und mit unterschiedlicher Verzögerung an ihr Ziel gelangen.
Das → TCP-Protokoll sorgt dafür, dass die Pakete in der richtigen Reihenfolge zusammengesetzt werden.

Bilder und andere Objekte

Eine Webseite kann Verweise auf Objekte enthalten, die selbst nicht im HTML-Quelltext enthalten sind. Das bekannteste Beispiel sind Bilder: Dieses und andere eingebettete Objekte wird durch seinen Pfad (Attribut src) bezeichnet.

Der Browser erhält die Information erst nach abgeschlossenem Empfang der angeforderten Webseite, da die Pfade in eben dieser Webseite enthalten sind.
In diesem Fall sendet der Browser einen weiteren HTTP-Request an die angegebene Adresse.

Auf diese Weise kann jede Webseite Objekte aus mehreren unterschiedlichen Quellen enthalten, und zwar sogar von unterschiedlichen Webservern.

Webseiten können nur einfachen Text (HTML-Quelltext) enthalten. Andere Objekte wie z.B. Bilder können auch binär codierte Daten enthalten, die mit einem Text-Editor nicht lesbar sind.
Eine echte Erweiterung bietet die → XML-Technik: In eine → XHTML-Webseite kann man beliebige Objekte der XML-Familie Inline (direkt in den Quelltext) einbetten, z.B. MathML-Formeln oder → SVG-Objektgrafik.

Für jedes einzelnen eingebettete Objekt (Bild, Sound, Text, Webseite(Rahmen), ...) wird vom Browser ein eigener HTTP-Request abgesendet.
Dabei erhält jeder abgesendete Request vom Betriebssystem eine eigene → Port-Nummer.

In der Praxis sendet ein Browser unmittelbar nach Empfang einer Webseite mehrere weitere HTTP-Requests, um alle enthaltenen Bilder anzufordern.
Da Bilder meist in mehreren Daten-Paketen gesendet werden, treffen danach am Client-PC Daten unterschiedlicher Objekte in bunt gemischter Reihenfolge ein.
Der Browser kann die Daten mit Hilfe der → Port-Nummer den richtigen Objekten zuteilen, und nach vollständigem Empfang anzeigen. Das → TCP-Protokoll organisiert die korrekte Ordnung der eintreffenden Daten-Pakete.
Bei langsamen Verbindungen kann man beobachten, wie die Bilder einzeln nach dem Aufbau der Webseite einlangen.

Werkzeug

CURL

Browser

Ein Client-Server-Dienst wie HTTP erfordert grundsätzlich mindestens einen HTTP-Client (Browser) und einen HTTP-Server (Webserver).

Derzeit findet eine Entwicklung statt, welche immer mehr Details der PC-Arbeit vor den AnwenderInnen versteckt. Das betrifft auch die Verwendung des Internet. Hier wird nicht diskutiert, ob das sinnvoll ist, sondern lediglich, wie EntwicklerInnen und anspruchsvolle AnwenderInnen weiterhin an wichtige Informationen herankommen.

Wenig erfahrene Internet-AnwenderInnen vertreten oft die Meinung, dass www ein unentbehrlicher Teil jeder Internet-Adresse sei, und fangen mit http:// wenig an. Tatsächlich ist es genau umgekehrt: Es gibt viele URLs ohne www, die Angabe des Protokolls http:// ist jedoch (im Datenverkehr) unverzichtbar...
Der Firefox-Browser unterdrückt in neueren Versionen die Anzeige des HTTP-Protokolls in der (URL)-Adresszeile. Andere Protokolle (https, ftp, file, ...) werden vorläufig noch angezeigt.
So ändert man die Konfiguration von Firefox: Geben sie in die Browser-Adresszeile ein:
about:config
und quittieren sie die nachfolgende Warnung. Tragen sie danach in das Filter-Feld (ganz oben auf der angezeigten Webseite) diesen Text - oder wenigsrtens die ersten Zeichen - ein:
browser.urlbar.trimURLs
Suchen sie die Zeile mit dem angegebenen Namen. Ändern sie die Grundeinstellung des Werts von true auf false - je nach Version mit Doppelklick oder Rechtsklick + Befehl toggle
Speichern ist nicht erforderlich. Der Browser zeigt danach wieder das verwendete Protokoll (HTTP) in der Adresszeile an.

cURL (Client for URLs)

ist ein ausgezeichnetes Konsolen-Programm mit umfangreichen Funktionen. Man kann es u.a. als Universal-Werkzeug für das HTTP-Protokoll verwenden. Hier werden nur wenige ausgewählte Beispiele der Anwendung vorgestellt.

cURL gibt es kostenfrei für alle gängigen Betriebssysteme. In fast allen Linux-Systemen ist cURL bereits installiert. Auf Windows muss man selbst installieren: Je nach Windows-Version verlangt das Programm evtl. die Installation weiterer Bibliotheken (libraries).

Hilfe und Manual

Beispiele für die Lunux → Shell-Konsole:
# curl --help
# curl --manual
# man curl
(Den letzten Befehl gibts nur auf Linux: Navigation mit den Pfeil-Tasten, Ausgang mit Taste q ).

Windows-Varianten für die → Konsole cmd.exe, zusätzlich mit der Anweisung, den Text als Text-Datei zu speichern:
C:\> curl --help >> c:\curl_help.txt
C:\> curl --manual >> c:\curl_manual.txt
Anforderung (HTTP GET-Request) und Anzeige der erhaltenen (HTML)-Daten:
# curl 192.168.0.2
# curl http://192.168.0.2
# curl http://192.168.0.2/index.html
# curl http://192.168.0.2/demo.php
(Ändern sie die IP-Adresse passend zu ihrem Server)
Damit sollte man den gleichen Text erhalten wie mit der Quelltext-Funktion eines Browsers angezeigt. Von dynamischen Webseiten (*.php) erhält man nicht den Text der Datei, sondern das vom Programm erzeugte Produkt - meist HTML-Text.
Zusätzlich: Anzeige des HTTP Response-Headers:
# curl --include 192.168.0.2
# curl -i http://192.168.0.2/index.html
# curl -i http://192.168.0.2/gibts.nicht
Damit sieht man alle Daten, die ein Browser erhält, auch den sonst nicht angezeigten HTTP-Header. Beachten sie die 1.Zeile im HTTP-Header: Code=200 bedeutet OK, jeder andere Code bezeichnet Fehler.

Nur HTTP Response Header:
# curl -I http://192.168.0.2
Mit Option -I wird nur der vom entfernten Webserver gesendete HTTP Response Header angezeigt.

Anzeige aller HTTP-Header:
# curl -v http:/7192.168.0.2
Mit Option -v wird sowohl der vom Client gesendete HTTP Request-Header als auch der vom entfernten Server gesendete HTTP Response-Header und die nachfolgenden Daten angezeigt.
Ähnliche Funktionen bieten die Programme wGET, wPUT und andere. Links: cURL, wGET (Windows), wPUT

Ausgewählte Links zum Thema HTTP

Standards:

RFC 1945 (HTTP 1.0 - 1996)
RFC 2616 (HTTP 1.1 - 1999)

WoldWideWeb ConsortiumW3C - HTTP1.1, HTTP Status Code

IANA - Internet Assigned Numbers Authority - Port Numbers
Wikipedia Wikipedia - Hypertext Transfer Protocol ( de, en), HTTP Status-Code (de, en), Tim Berners-Lee, TCP (de, en), IP (en, de), Port, cURL, wGET
SelfHTML - Webserver  

Letzte Änderung dieser Seite: 2012-03-09 22:03:38
XHTML CSS