Die meisten Webserver basieren auf einem standardisierten Mechanismus zur Ausführung dynamischer Inhalte. Dieser Mechanismus ist das Common Gateway Interface oder CGI. Es ist keine Zauberei. Es handelt sich um eine Ordnerstruktur und eine Reihe von Regeln, die einem Server mitteilen, dass er Code nicht mehr wie statischen Text behandeln soll, sondern ihn wie ein ausführbares Programm behandeln soll.
Der Schlüssel ist ein bestimmtes Unterverzeichnis mit dem Namen cgi-bin. Wenn Sie einen Webserver einrichten, erstellen Sie diesen Ordner in Ihrem Dokumentenstamm. Der Server ist so konfiguriert, dass er dieses Verzeichnis genau überwacht. Jede von cgi-bin angeforderte Datei löst ein anderes Verhalten aus als eine Standard-HTML-Seite.
Anstatt die Datei zu lesen und ihren Rohinhalt an Ihren Browser zu senden, führt der Server die Datei aus. Die durch diese Ausführung generierte Ausgabe wird tatsächlich an den Client geliefert. Dadurch kann der Server Code im laufenden Betrieb ausführen und Antworten basierend auf Benutzereingaben, Datenbankabfragen oder anderer dynamischer Logik generieren.
Die in diesem Verzeichnis gespeicherten Programme sind normalerweise entweder kompilierte Binärdateien, wie sie von einem C-Compiler erstellt werden, oder interpretierte Skripte. Eine Sprache dominiert diesen Raum: PERL. Es ist seit Jahrzehnten das Rückgrat der CGI-Skripterstellung, da es die Textverarbeitung und Serverinteraktion mit bemerkenswerter Leichtigkeit handhabt.
Betrachten Sie ein konkretes Beispiel. Sie geben diese URL in Ihren Browser ein: https://www.howstuffworks.com/cgi-bin/search.pl.
Der Server sieht den Pfad. Es erkennt, dass sich search.pl im Ordner cgi-bin befindet. Der Quellcode wird Ihnen nicht zugesandt. Es führt search.pl aus. Das PERL-Skript verarbeitet die Anfrage – fragt möglicherweise einen Suchindex ab – und gibt das HTML-Ergebnis zurück. Ihr Browser rendert dieses Ergebnis. Der Quellcode berührt niemals Ihren Bildschirm.
Möchten Sie es selbst ausprobieren? Es ist möglich, aber Sie brauchen zwei Dinge.
Zunächst müssen Sie eine für CGI geeignete Programmiersprache beherrschen. C und PERL sind die traditionellen Standards. Sie müssen verstehen, wie HTTP-Header ausgegeben und Servereingaben verarbeitet werden.
Zweitens benötigen Sie Zugriff auf einen Webserver, der die CGI-Ausführung unterstützt. Wenn Sie einen kostenpflichtigen Webhosting-Dienst nutzen, verfügen Sie wahrscheinlich bereits über diese Funktion. Die meisten Shared-Hosting-Pläne beinhalten standardmäßig CGI-Unterstützung. Überprüfen Sie zur Bestätigung die Dokumentation Ihres Hosting-Anbieters. Möglicherweise müssen Sie Ihre Skripte speziell in das Verzeichnis cgi-bin hochladen.
Wenn Sie kein Hosting-Konto haben, können Sie einen Webserver auf Ihrem Heimcomputer installieren. Dadurch haben Sie die volle Kontrolle. Sie können mit verschiedenen Konfigurationen experimentieren und Fehler in Echtzeit beheben. Es ist komplizierter als die Verwendung eines gehosteten Dienstes. Sie müssen die Serversoftware, Sicherheit und Berechtigungen selbst verwalten. Aber die Lernkurve ist im positiven Sinne steil. Sie werden genau verstehen, wie das Web unter der Haube funktioniert.
Dieses Setup funktioniert, weil der Server ausdrücklich angewiesen wird, Code in diesem bestimmten Ordner zu vertrauen und auszuführen. Außerhalb von cgi-bin behandelt der Server Dateien als statische Daten. Im Inneren sind es Programme. Diese Unterscheidung macht dynamische Webanwendungen möglich.
Der Server führt das Programm aus und sendet die Ausgabe an den Browser. Der Quellcode bleibt verborgen.
Ist es die modernste Art, Webanwendungen zu erstellen? Nein. Moderne Frameworks nutzen oft unterschiedliche Architekturen. Aber CGI hat das Muster etabliert. Es wurde bewiesen, dass Server externe Programme ausführen können, um Inhalte zu generieren. Jede dynamische Website, die Sie heute besuchen, geht auf diese einfache Verzeichnisstruktur zurück.
Die Grenze zwischen statischem und dynamischem Inhalt wird durch die Konfiguration des Servers definiert. Der **





































