CGI (ang.Common Gateway Interface - interfejs bram sieciowych) jest jednym ze sposobów komunikacji serweraWWW z innymi aplikacjami. CGI umożliwia zarówno pobieranie danych pochodzących od przeglądarki jak i przekazywanie danych przeznaczonych dla niej.
Terminy "program CGI" i "skrypt CGI" są funkcjonalnie jednoznaczne. Powodem, dla którego programy CGI nazywane są często skryptami, jest popularność języków skryptowych (takich jak np. Perl) w ich tworzeniu.
Wśród rzeczy możliwych do osiągnięcia przy pomocy CGI znajdują się na przykład:
pobieranie informacji z bazy danych i formatowanie rekordów w celu wyświetlenie ich zawartości na stronie,
tworzenie ankiet i kwestionariuszy,
tworzenie dynamicznych ilustracji - takich jak wykresy czy schematy.
Najważniejsze cechy CGI, to:
Skalowalność. Prostota interfejsu CGI sprawia, że jest on niezwykle łatwo skalowalny. Można użyć go do czegoś prostego, jak przesyłanie zawartości formularza na odpowiedni adres e-mail, ale również do budowania czegoś bardziej złożonego, jak internetowysupermarket, który korzysta z kilku baz danychOracle.
Niezależność od języka programowania. Programy CGI są niezależne od języka, w którym są napisane. Oznacza to, że można pisać tego typu programy w takim języku, jaki jest najwygodniejszy dla piszącego. Często wykorzystuje się Perla, TCL, C, C++, Visual Basic i AppleScript. Wiele z tych języków posiada biblioteki wspomagające obsługę CGI (generowanie kodu HTML, obsługa formularzy itp)
Obsługa CGI wiąże się zazwyczaj z tworzeniem nowego procesu na każde żądanie. Powoduje to duże obciążenie serwera zwłaszcza dla języków interpretowanych. Powstały rozwiązania przyśpieszające typu FastCGI lub automatyczne tworzenie tymczasowych wersji kompilowanych.
Istnienie wersji CGI dla różnych platform nie oznacza jeszcze, że program napisany dla jednej platformy będzie działał na innej. Na szczęście aplikacje napisana na przykład w Javie lub Perlu, mogą być przenoszone z niewielkimi modyfikacjami, lub nawet bez nich. Programy w języku C muszą być przynajmniej rekompilowane.
Innym rozwiązaniem problemu dynamicznego tworzenia zawartości WWW są szablony z rozmaitymi językami skryptowymi (na przykład PHP czy ASP).