thumb
La Common Gateway Interface (littéralement « Interface de passerelle commune »), généralement abrégée CGI, est une interface utilisée par les serveurs HTTP. Elle a été normalisée par la RFC 3875.
Au lieu d'envoyer le contenu d'un fichier (fichier HTML, image), le serveur HTTP exécute un programme, puis retourne le contenu généré. CGI est le standard industriel qui indique comment transmettre la requête du serveur HTTP au programme, et comment récupérer la réponse générée. Un exemple classique de paramètre est la chaîne de caractères contenant les termes recherchés auprès d'un moteur de recherche.
Une des caractéristiques de l'interface CGI est d'être indépendante de tout langage de programmation, du fait qu'elle utilise les flux standard et les variables d'environnement. Même si le langage Perl a historiquement été souvent utilisé pour écrire un programme CGI, il est possible d'en écrire en C, Python, PHP, script shell, en Java ou en tout autre langage de programmation.
Du point de vue du serveur HTTP, il est nécessaire de le configurer pour associer l'exécution du programme CGI à certaines URL. Par défaut, les serveurs se contentent généralement de retourner le contenu des fichiers.
Comme cette technologie requiert le lancement d'un nouveau processus à chaque requête, elle entraîne une charge de traitement évitable. Ceci a eu pour effet la création d'autres technologies plus efficaces. FastCGI est une évolution basée sur CGI qui permet de ne lancer le programme CGI qu'une seule fois, et non pas à chaque requête ; cette technique nécessite une petite bibliothèque logicielle, qui a été développée pour les principaux langages utilisés (C, Perl, Purebasic...).
Une autre solution consiste à intégrer le programme directement dans le serveur HTTP sous la forme d'un module, ce qui nécessite une adaptation sensiblement plus lourde, propre au serveur HTTP. C'est le cas avec Apache qui propose des dizaines de modules pour interpréter des langages, se connecter à des bases de données, etc.
L'interface CGI existe depuis 1993.