Un CGI (Common Gateway Interface, traduisez interface de passerelle commune)
est un programme exécuté du côté serveur,
permettant de cette façon l'affichage de données traitées par le serveur
(provenant d'une autre application, comme par exemple un système de gestion de base de données,
d'où le nom de passerelle). C'est l'usage le plus courant des programmes CGI.
Un des grands intérêts de l'utilisation de CGI est la possibilité de
fournir des pages dynamiques, c'est-à-dire des pages pouvant être différentes
selon un choix ou une saisie de l'utilisateur. L'application la plus fréquente de cette
technique repose sur l'utilisation de formulaires HTML permettant
à l'utilisateur de choisir ou saisir des données, puis à cliquer sur un bouton
de soumission du formulaire, envoyant alors les données du formulaire en paramètre
du programme CGI...
Un programme CGI peut être écrit dans n'importe quel langage ou du moins à peu près...
pourvu que celui-ci soit:
- capable de lire le flux de données d'entrée
- capable de traiter des chaînes de caractères
- capable d'écrire sur le flux standard de sortie
- exécutable ou interprétable par le serveur
Les langages de programmation les plus utilisés
pour l'écriture des CGI sont:
- Le langage Perl (majoritairement, car il est particulièrement adapté à la manipulation
de chaînes de caractères)
- Les langages C, C++
- Java
Lorsqu'une requête est envoyée
au serveur, celui-ci examine l'extension du fichier demandé afin de déterminer
l'action qu'il va effectuer. Ainsi, par exemple:
- dans le cas d'un fichier HTML (extension .htm ou .html): le serveur va générer des en-têtes de réponse HTTP
qu'il va envoyer au navigateur demandant un fichier, puis envoyer le fichier HTML
- dans le cas d'un fichier CGI écrit en Perl (extension .pl): le serveur va exécuter
l'interpréteur Perl, celui-ci va interpréter le code contenu dans le fichier portant l'extension
.pl puis envoyer les données au serveur, qui va les envoyer au navigateur, comme dans le cas
d'un fichier HTML
- dans le cas d'un fichier CGI écrit en langage C (extension .exe sous Windows puisqu'il s'agit d'un exécutable):
le serveur va exécuter le CGI, puis envoyer vers le navigateur les données que le programme lui aura transmis
Ainsi, le rôle d'un programme CGI est de recevoir des données envoyées par le serveur, à les
traiter, puis à renvoyer des en-têtes de réponses et des tags HTML valides. En effet, lorsqu'un programme CGI
renvoie un fichier, il doit commencer par envoyer un en-tête HTTP permettant de préciser le type de contenu
envoyé au navigateur (appelé type MIME), c'est-à-dire:
|