Większość serwerów internetowych opiera się na ustandaryzowanym mechanizmie uruchamiania treści dynamicznych. Mechanizm ten nosi nazwę Common Gateway Interface (CGI). To nie magia. Jest to struktura folderów i zestaw reguł, które mówią serwerowi, aby przestał traktować kod jako tekst statyczny i zaczął traktować go jak program wykonywalny.
Kluczowym elementem jest specjalny podkatalog o nazwie cgi-bin. Konfigurując serwer WWW, tworzysz ten folder w katalogu głównym swojego dokumentu. Serwer jest skonfigurowany tak, aby ściśle monitorować ten katalog. Każdy plik żądany z cgi-bin powoduje inne zachowanie niż standardowa strona HTML.
Zamiast czytać plik i wysyłać jego surową zawartość do przeglądarki, serwer wykonuje plik. To wynik wygenerowany w wyniku tego wykonania jest dostarczany klientowi. Dzięki temu serwer może uruchamiać kod na bieżąco, generując odpowiedzi na podstawie danych wejściowych użytkownika, zapytań do bazy danych lub innej dynamicznej logiki.
Programy przechowywane w tym katalogu to zazwyczaj albo skompilowane pliki binarne (takie jak te utworzone przez kompilator C), albo zinterpretowane skrypty. Na tym polu dominuje jeden język: PERL. Od dziesięcioleci jest podstawą skryptów CGI, ponieważ z niesamowitą łatwością radzi sobie z manipulacją tekstem i interakcją z serwerem.
Spójrzmy na konkretny przykład. Wpisujesz ten adres URL w swoją przeglądarkę: https://www.howstuffworks.com/cgi-bin/search.pl.
Serwer widzi ścieżkę. Rozpoznaje, że search.pl znajduje się w folderze cgi-bin. Nie wysyła Ci kodu źródłowego. Uruchamia search.pl. Skrypt PERL przetwarza żądanie — być może uzyskując dostęp do indeksu wyszukiwania — i zwraca wynik w formacie HTML. Twoja przeglądarka wyświetli ten wynik. Kod źródłowy nigdy nie dociera do Twojego ekranu.
Chcesz spróbować sam? Jest to możliwe, ale potrzebne będą dwie rzeczy.
Najpierw musisz znać język programowania odpowiedni dla CGI. Tradycyjne standardy to C i PERL. Musisz zrozumieć, jak wysyłać nagłówki HTTP i przetwarzać dane wejściowe serwera.
Po drugie, potrzebujesz dostępu do serwera WWW, na którym można uruchomić CGI. Jeśli korzystasz z płatnego dostawcy usług hostingowych, najprawdopodobniej masz już tę funkcję. Większość wspólnych planów hostingowych domyślnie obsługuje CGI. Aby to potwierdzić, sprawdź dokumentację swojego dostawcy usług hostingowych. Może być konieczne przesłanie skryptów do katalogu cgi-bin.
Jeśli nie masz konta hostingowego, możesz zainstalować serwer WWW na swoim komputerze domowym. To zapewni Ci pełną kontrolę. Możesz eksperymentować z różnymi konfiguracjami i debugować błędy w czasie rzeczywistym. Jest to bardziej skomplikowane niż korzystanie z usługi hostingowej. Będziesz musiał samodzielnie zarządzać oprogramowaniem serwera, bezpieczeństwem i prawami dostępu. Jednak krzywa uczenia się jest tutaj stroma, ale satysfakcjonująca. Zrozumiesz dokładnie, jak działa sieć od środka.
Ta konfiguracja działa, ponieważ serwerowi wyraźnie polecono zaufać i wykonać kod w tym konkretnym folderze. Poza cgi-bin serwer traktuje pliki jako dane statyczne. Wewnętrznie są to programy. To właśnie ta różnica umożliwia dynamiczne aplikacje internetowe.
Serwer wykonuje program i wysyła dane wyjściowe do przeglądarki. Kod źródłowy pozostaje ukryty.
Czy to najnowocześniejszy sposób budowania aplikacji webowych? Nie. Nowoczesne frameworki często korzystają z innych architektur. Ale CGI zapoczątkowało wzór. Udowodnił, że na serwerach można uruchamiać zewnętrzne programy generujące treść. Każda dynamiczna witryna internetowa, którą dzisiaj odwiedzasz, ma swoje korzenie w tej prostej strukturze katalogów.
Granicę pomiędzy treścią statyczną i dynamiczną wyznacza konfiguracja serwera. **



































