Créé le 28 avril 2004
Modifié le
Technologies serveur > CGI

CGI (Common Gateway Interface)

Présentation du CGI

Le CGI, Common Gateway Interface, est une passerelle entre un serveur Web et des programmes d'applications sur le serveur. Cette technologie se base sur des passages de paramètres entre le client et les applications. Cela signifie qu'en utilisant des CGI, on peut obtenir des pages Web diférentes en fonction des choix et des requêtes particulières des utilisateurs. La communication dynamique d'un client vers une application serveur se fait généralement par l'intermédiaire de formulaires (balise <FORM>) ou de boutons de validation présents sur la page HTML.

Des paramètres destinés au CGI figurent donc dans le code source HTML, souvent à l'intérieur de balises <FORM>:

<HTML>

<HEAD>

<TITLE>Formulaire pour CGI</TITLE>

</HEAD>

<BODY>

<H1>Un exemple</H1>

<FORM METHOD= POST ACTION= "/cgi-bin/exemple.exe">

Nom:

<INPUT TYPE=TEXT SIZE=20 NAME="nom"><BR>

Prénom:

<INPUT TYPE=TEXT SIZE=20 NAME="prénom"><BR>

Suggestions:<BR>

<TEXTAREA COLS=30 ROWS=10 NAME="suggestions"></TEXTAREA>

<INPUT TYPE=SUBMIT VALUE="OK">

</FORM>

Ceci affiche un formulaire:

Ce programme est exécuté côté serveur dans le cadre d' une architecture 3-tiers, visant à développer des sites Web dynamiques et interactifs pouvant s'appuyer par exemple sur des bases de données stockées sur un serveur et permet d'afficher les données provenant de ces applications tierces, d'où son nom de passerelle (Gateway).

Fonctionnement du CGI

Le rôle spécifique d'un programme CGI est de recevoir des données envoyées par le serveur HTTP (reçues du poste client), de les traiter, puis de renvoyer des réponses et des balises HTML valides. Un programme CGI comporte des scripts serveur généralement écrits dans un langage compilé ou interprété tels que Perl, C ou Java. Il faut que ces scripts serveurs soient capables de recevoir des paramètres (variables et instructions) depuis des clients Web, d'effectuer des traitements ou des calculs, ou encore d'accéder à des sources de données (SGBD notamment) et, bien sûr, de générer des résultats dans un format assimilable par une page Web (soit un format MIME).

Les pages ainsi générées sont ensuite renvoyées vers le navigateur via le protocole HTTP.

Le schéma suivant montre le scénario typique d'exécution d'un programme CGI.

  • Le client fait appel à une application nécessitant d'être exécutée sur le serveur.
  • Le serveur HTTP, à la réception de la requête, lance un nouveau processus serveur.
  • La passerelle CGI récupère alors depuis le serveur HTTP les paramètres et les passent au processus serveur.
  • Le processus serveur charge et exécute le programme demandé (un SGBD par exemple) qui génère la page HTML et la renvoie au CGI, qui la renvoie vers le serveur HTTP.
  • Le serveur HTTP envoie le document HTML final au navigateur client.

Exemples d'applications en CGI

Les programmes CGI sont invoqués le plus souvent pour accéder aux données des formulaires HTML remplis par les utilisateurs.

Une autre utilisation courante consiste à pouvoir envoyer des emails également sur base d'un formulaire. On peut donc gérer une liste d'adresses électroniques pour pouvoir envoyer un courrier électronique à toute une liste diffusion.

De nombreuses autres applications sont possibles:

  • création d'un forum de discussion
  • création d'espaces réservés aux membres d'un site
  • permettre aux visiteurs d'un site de pouvoir donner une côte ou un classement pour des produits (commerciaux ou des textes, tutoriaux ...) disponibles sur le site.

Les programmes CGI offrent donc un support important au développement de services web, e-commerce notamment et à rendu interactif des pages d'un site web.

Avantages et inconvénients du CGI

Les CGI offrent divers avantages:

  • Le traitement (avant envoi vers le navigateur) par un serveur d'applications ouvre les sites Web dynamiques à l'interactivité de leur contenu et à leur évolutivité (via les bases de données par exemple).
  • Les CGI présentent un grand avantage de robustesse puisque chaque exécution de programmes se passe dans un processus autonome et d'indépendance par rapport aux langages de programmation.
  • Ceci a également pour corollaire de fournir une très bonne portabilité des porgrammes CGI d'un système d'exploitation à un autre.


Développer son site avec des CGI n'est pourtant pas toujours sans problèmes:

  • Les CGI sont souvent utilisés abusivement, comme simples scripts serveur, détournés de leur fonction première, c'est-à-dire d'être une passerelle vers des programmes d'application. Ceci a pour conséquence d'alourdir les serveur.
  • Les CGI sont critiqués pour leur faible performance, étant donné que les processus serveurs et les programmes d'application doivent à chaque fois être relancés (ce qui n'est pas le cas avec les API ou avec les servlets Java, qui se chargent en mémoire lors de la première utilisation et y restent jusqu'à la fin de la session.).

Il faut noter qu'il existe une version améliorée de CGI, appelée la passerelle FastCGI. Comme pour les CGI, les applications FastCGI peuvent être écrites dans n'importe quel langage et accéder à des des bases de données. La principale différence réside dans le fait que FastCGI permet d'établir une connexion à l'initialisation d'un processus serveur et de le maintenir en attente d'une nouvelle connexion. Cette technique augmente la rapidité et les performances sur le serveur.

Liens utiles

http://cgi.scripts-fr.com/

http://hoohoo.ncsa.uiuc.edu/cgi/overview.html

http://www.commentcamarche.net/cgi/cgiintro.php3

http://guides.rotule.net/cgi/

http://dam.cicrp.jussieu.fr/dam/p6_vis/cgi/cours6.html

http://www.ftls.org/fr/initiation/cgi/index2.shtml

http://echo-linux.alienor.fr/articles/cgi_bin/cgi-bin.html


Haut de page