Common Gateway Interface (zkráceně CGI) je protokol pro propojení externích aplikací s webovým serverem. To serveru umožňuje delegovat požadavek od klienta na externí aplikaci, která dle požadavku vrátí výstup. Taková aplikace typicky zpracuje nějaký skript ve webové stránce a webovému serveru navrátí statickou stránku, která je následně poslána klientovi jako výstup jeho požadavku.
Rozhraní Common Gateway Interface bylo v prostředí internetu přítomno již od počátku 90. let a ve své době představovalo jediný způsob dynamického zpracování obsahu. Postupně vznikla efektivnější řešení (FastCGI, integrace skriptovacích jazyků jako modulu WWW serveru) a CGI bylo vytlačeno do ústraní.
Další informace
Webový server, který podporuje rozhraní CGI, lze nakonfigurovat pro interpretaci adresy URL, která odkazuje na CGI skripty. Standardně se cgi-bin adresáře ukládají v kořenovém adresáři stromové struktury a se všemi takto uloženými soubory se nakládá jako s CGI skripty. Další populární úmluva je rozpoznávání pomocí přípony; například pokud je u CGI skriptů použita přípona .cgi, může být webový server nakonfigurován tak, aby interpretoval všechny tyto soubory jako CGI skripty.
V případě použití HTTP metody PUT nebo POST jsou uživatelská data předána v rámci programu přes standardní vstup. V každém případě se podle standardu CGI data předávají do aplikace pomocí některých specifických proměnných prostředí. Toto je v kontrastu s typickým provedením, kde argumenty příkazové řádky jsou používány a prostředí je v nepřetržitém běhu a nedá se mu věřit. Webový server vytváří malé a účinné podmnožiny proměnných prostředí jemu předaných a přidává detaily vztahující se k vykonání programu.
Jednoduchý příklad
Následující CGI program vypisuje všechny proměnné prostředí povolené na webovém serveru:
#!/usr/local/bin/perl#### printenv—demo CGI program which just prints its environment###print"Content-type: text/plain\n\n";foreach$var(sort(keys(%ENV))){$val=$ENV{$var};$val=~s|\n|\\n|g;$val=~s|"|\\"|g;print"${var}=\"${val}\"\n";}
Pokud si webový prohlížeč vyžádá informace proměnných prostředí na http://example.com/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding, 64bitový Microsoft Windows webový server na kterém běží Cygwin vrátí následující informace:
Z výpisu vidíme, že uživatel používá prohlížeč Firefox, který běží na operačním systému Windows 7. Webový server Apache běží na systému, který emuluje Unix, a CGI skript má název cgi-bin/printenv.pl