Qu’est-ce que le CGI ?

La common gateway interface (CGI) est une interface de serveurs Web qui permet un échange de données normalisé entre des applications et des serveurs externes. Elle fait partie des plus anciennes technologies d’interface de l’Internet et est encore fréquemment utilisée aujourd’hui. Avec les CGI (parfois traduit littéralement en français interface de passerelle commune), les pages HTML ne doivent pas être entièrement disponibles sur le serveur, mais sont générées dynamiquement dès qu’un utilisateur fait une demande appropriée via le site Web.

Fonction et application

Lorsqu’un utilisateur saisit une entrée sur un site Web, ses données ne sont pas directement transmises au serveur, mais elles doivent d’abord être traitées. Ce traitement est effectué par un logiciel externe (ou un script CGI), et non directement par le serveur Web. Le programme transfère les données via l’interface CGI standardisée au serveur, qui peut alors afficher les informations nouvellement générées en HTML. Les programmes CGI sont généralement situés dans un dossier séparé sur le serveur Web.

Le script CGI lui-même peut être écrit dans différents langages de programmation. L’interface de passerelle commune garantit que, quelle que soit la langue utilisée, le serveur Web et le script peuvent communiquer entre eux.

Cas d’utilisation de l’interface de la Common Gateway Interface

  • Paniers d’achat : si un client ajoute des produits à son panier en ligne, cette information est traitée par le script CGI et ensuite envoyée au serveur.
  • Commentaires : remplissage d’un champ de commentaire. En cliquant sur « Envoyer », le texte est envoyé au script CGI, qui transmet le message à son tour au serveur.
  • Formulaires : même avec les formulaires en ligne, par exemple pour les candidatures ou les inscriptions, les données saisies sont d’abord traitées par la common gateway interface avant d’être envoyées au serveur.
  • Statistiques du site Web : si les chiffres d’accès au site Web sont affichés, la technologie sous-jacente utilise souvent des CGI.
  • Server Side Include: des interfaces de passerelle commune peuvent être utilisées pour charger du contenu textuel sur le site web de manière dynamique.
  • Tests de logiciels : les développeurs peuvent utiliser des scripts CGI pour tester la fonctionnalité d’applications en ligne externes pour des sites Web sur le navigateur.

Il est facilement de repérer sur l’URL si un script est en cours d’exécution, même si vous n’avez aucune connaissance en programmation. Le serveur reçoit toutes les informations pertinentes du script via une chaîne de caractères spécifique qui y est encodée. On peut distinguer trois méthodes de transfert de données :

  • QUERY_STRING : cette méthode est utilisée principalement pour les requêtes utilisateur
  • PATH_INFO : cette méthode est utilisée pour transmettre des informations contextuelles au site Web
  • Stdin : pour permettre les autres saisies de l’utilisateur d’être traitées

Avantages et inconvénients de la common gateway interface

Malgré son âge, la Common Gateway Interface est l’une des interfaces les plus fréquemment utilisées dans le développement de sites Web. Outre divers avantages, cette technologie présente également quelques inconvénients.

Avantages

La CGI est une méthode simple et efficace pour générer du contenu de site Web dynamique. En même temps, les applications CGI n’ont pas besoin d’être stockées sur le serveur, ce qui permet d’éviter de gaspiller des ressources. L’interface de la Common Gateway Interface est également compatible avec divers langages de programmation et peut donc être facilement intégrée dans les infrastructures existantes. Enfin, en tant que norme gratuite, elle n’entraîne aucun coût d’utilisation, mais peut être immédiatement utilisée par tout développeur.

Inconvénients

L’une des plus grandes faiblesses de la common gateway interface est que, bien que la charge du serveur soit réduite, le temps de réponse de l’application CGI est parfois assez long car le programme doit être redémarré à chaque nouvelle entrée. Surtout pour les sites Web à fort trafic, il peut devenir problématique que les serveurs ne prennent souvent en charge qu’un certain nombre d’applications CGI et que les autres demandes entrantes soient alors mises en file d’attente ou rejetées.

La common gateway interface, comme d’autres interfaces, peut présenter un risque de sécurité si aucune protection appropriée n’est mise en place. Grâce au CGI, les programmes externes ont en principe accès à l’intégralité des données du serveur Web. Des restrictions claires doivent donc être mises en place afin qu’un script CGI ne puisse pas causer de dommages.

Alternatives à la Common Gateway Interface

Ces dernières années, plusieurs autres technologies d’interface ont été développées, qui restent basées sur les CGI, mais qui tentent d’éliminer leur principal inconvénient, à savoir qu’un script doit être rechargé à chaque requête d’un utilisateur.

ASP (Active Server Pages) : l’ASP a été initialement développé par Microsoft pour ses propres serveurs, mais il est maintenant disponible pour de nombreux serveurs. L’interprète ASP est intégré au serveur Web, de sorte qu’il n’est pas nécessaire de lancer un nouveau processus pour l’utiliser. Les commandes ASP peuvent être écrites directement dans les pages HTML. Comme la CGI, l’ASP peut être utilisé avec différents langages de programmation.

PHP : PHP fait partie des langages de script les plus répandus sur le Web, après Perl. Il peut réaliser une grande partie de ce que font les scripts CGI. L’interpréteur PHP est néanmoins directement intégré au serveur Web.

ColdFusion : ColdFusion a été développé à l’origine pour Windows, mais il est maintenant également disponible pour diverses plateformes Unix. L’interpréteur ColdFusion est intégré au serveur Web, comme les autres alternatives CGI qui viennent d’être présentées. Les pages HTML peuvent être modifiées à l’aide de balises existantes ou d’éléments de contrôle personnalisés. En outre, ColdFusion offre aux développeurs un certain nombre de fonctionnalités standard.

FastCGI : avec FastCGI, les requêtes dynamiques du serveur Web peuvent être traitées directement via une interface Perl sans qu’il soit nécessaire de lancer un nouveau processus. FastCGI est largement compatible avec les CGI et est pris en charge par un grand nombre de serveurs web.