Kodokon kodokon.com

localhost, Ports und "bei mir läuft es doch"

Starte einen Server auf deinem eigenen Computer und verstehe, warum ihn sonst niemand sehen kann.

7 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Wenn du eine Website baust, wirst du sie nicht nach jeder einzelnen Änderung im Internet veröffentlichen. Du startest einen Server auf deinem eigenen Computer und rufst ihn mit deinem Browser auf. Diese Maschine, deine, hat einen reservierten Namen: localhost, wörtlich "der lokale Host". Sie hat auch eine reservierte IP-Adresse, 127.0.0.1, die immer "ich selbst" bedeutet, auf jeder Maschine der Welt.

Aber ein Computer kann mehrere Server gleichzeitig laufen lassen. Woher weißt du, mit welchem du gerade redest? Über die Ports. Wenn die IP-Adresse die Adresse des Gebäudes ist, dann ist der Port die Wohnungsnummer: eine Zahl zwischen 1 und 65535, die das Programm bezeichnet, das antworten soll. Einige sind festgelegt: Port 80 für http, 443 für https. In der Entwicklung nimmt man oft 3000, 5173 oder 8000. Der Port wird hinter den Namen geschrieben, getrennt durch einen Doppelpunkt: http://localhost:8000.

BASH
cd my-site
python3 -m http.server 8000

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Ein echter Webserver mit einem einzigen Befehl. Unter Windows schreibst du py -m http.server 8000.

Lass dieses Terminalfenster offen: Solange der Befehl läuft, antwortet der Server. Öffne jetzt http://localhost:8000 in deinem Browser, und du siehst die Dateien im Ordner my-site. Um den Server zu stoppen, gehst du zurück ins Terminal und drückst Strg + C.

Warum dieser ganze Aufwand, wo doch ein Doppelklick auf index.html die Seite ebenfalls öffnet? Weil ein Doppelklick die Datei unter der Adresse file:///C:/Users/... öffnet und nicht unter http://. Und mehrere Funktionen des Webs weigern sich schlicht, außerhalb des http-Protokolls zu arbeiten: Anfragen an einen Server, JavaScript-Module, bestimmte Schriften. Du bekommst dann rätselhafte Fehler, die wie von Zauberhand verschwinden, sobald du über localhost gehst.

BASH
lsof -i :8000

COMMAND   PID   USER   FD   TYPE  NODE NAME
python3  4821  sarah    3u  IPv4   TCP *:8000 (LISTEN)
Wer belegt Port 8000? Unter Windows: netstat -ano | findstr :8000

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Worauf bezieht sich der Name localhost?
    • Auf den Server deines Hosting-Anbieters
    • Auf deinen eigenen Computer
    • Auf das WLAN, mit dem du verbunden bist
  2. Warum sieht ein Kollege deine Website nicht, wenn er http://localhost:3000 öffnet?
    • Weil die Portnummer auf seiner Maschine falsch ist
    • Weil localhost seine eigene Maschine bezeichnet, nicht deine
    • Weil er https benutzen müsste
  3. Wofür ist die Portnummer in http://localhost:8000 da?
    • Um anzugeben, welches Programm auf der Maschine antworten soll
    • Um die Kommunikation zu verschlüsseln
    • Um die Seiten der Website durchzunummerieren