Common Gateway Interface

Een Common Gateway Interface of CGI is een internettechnologie die het mogelijk maakt om in de webbrowser dynamisch gegevens op te vragen van de webserver. CGI is een standaard voor dataoverdracht tussen de cliënt en het programma.

CGI werd in 1993 ontwikkeld door het National Center for Supercomputing Applications (NCSA) voor de NCSA HTTPd-webserver. Gegevens uit de querystring worden door de webserver als omgevingsvariabelen doorgegeven aan het aangeroepen CGI-programma en deze worden door het programma gebruikt als parameters. Het programma stuurt het resultaat van de bewerking terug naar de webserver en de webserver stuurt het terug naar de browser.

CGI-programma's worden door de webserver principieel anders behandeld dan statische HTML pagina's. Daarom hebben CGI-programma's speciale rechten (uitvoerbaar) nodig. Vaak worden dergelijke programma's bij elkaar in een directory gezet, waarbij de benodigde rechten op alle bestanden in die directory staat. Een veelgebruikte naam voor zo'n directory is cgi-bin.

Voor CGI-programma's kan een scripttaal worden gebruikt, maar ook een gecompileerd programma. Het is zelfs mogelijk om onder Windows, een DOS-batchbestand als CGI-programma te laten functioneren.

Scripttalen die veel voor CGI worden gebruikt zijn Perl, Python en Ruby.

Bij CGI wordt elke keer als een CGI-programma wordt opgevraagd een nieuw proces gestart. Dat kan capaciteitsproblemen geven bij een te groot aantal requests. Later ontwikkelde technologieën als PHP, Active Server Pages (ASP) en ColdFusion ondervangen dit probleem. Bij deze technologieën lopen de scripts in-proces in de webserver.

In de veelgebruikte Apache webserver is het inmiddels mogelijk om CGI-programma's in-proces te laten lopen, door het installeren van de mod_perl-module. De webserver is daardoor in staat om zelf Perlscripts te interpreteren en hoeft geen externe Perlinterpreter aan te roepen.

Zie ook bewerken