Les scripts CGI ont pour but d'afficher des pages Web générées
par un programme informatique, d'où la dénomination de pages web dynamiques pour les
pages créées par ce moyen. Toutefois, étant donné que le serveur renvoie
telles quelles au navigateur les informations que lui fournit le script CGI, il est nécessaire
d'ajouter aux données à afficher les en-têtes HTTP
permettant au navigateur de comprendre qu'il s'agit d'une page web.
 |
Le programme CGI doit créer lui-même les en-têtes HTTP. A contrario la plupart
des langages de pages web dynamiques, tels que PHP prennent
en charge la création des en-têtes. |
Puisque le serveur ne crée pas d'en-têtes pour les CGI,
un script CGI doit commencer par envoyer un en-tête HTTP correspondant
au type de fichier qu'il transmet.
Compte tenu du fait que le rôle principal des CGI
est de créer des pages dynamiques, l'en-tête HTTP correspondra
la plupart du temps au type text/html.
La première chaîne envoyée au navigateur est donc la suivante :
content-type : text/html\n\n
 |
Les deux sauts de ligne sont indispensables !
- le premier sert simplement à retourner à la ligne ;
- le second sert à créer la ligne vide séparant les en-têtes HTTP du corps du message, comme le veut la spécification du protocole HTTP.
|
Il est légitime de se demander pourquoi le serveur ne pourrait pas ajouter tout seul
les en-têtes HTTP, comme il le fait dans le cas des pages web statiques (fichiers
.htm et .html). En fait, un programme CGI peut renvoyer n'importe quel type
de contenu, c'est-à-dire qu'il est capable de renvoyer une image octet par octet,
qui sera intégrée dans un document HTML par exemple, pourvu que le CGI renvoie
un en-tête correspondant au type de l'image. Une fois de plus, le serveur pourrait éventuellement
être capable de reconnaître le type de données que le CGI renvoie et adapter
les en-têtes HTTP en fonction. En réalité, les en-têtes HTTP peuvent
faire beaucoup plus que préciser le type de document envoyé (voir
l'article sur le protocole HTTP), il est notamment possible d'effectuer une redirection
en envoyant un en-tête de redirection.
Une exemple d'usage consiste à
pointer vers un CGI, qui enregistre des informations sur le visiteur (une sorte de compteur de visites
amélioré), puis le redirige vers un document, de façon totalement transparente.
Voici un exemple de script tout simple permettant d'afficher une page web sur laquelle
est écrit « Hello World » (cette phrase est sans aucun doute la phrase
la plus vue sur le Web, car c'est la première chaîne que les programmeurs en herbe
affichent par coutume).
#! /usr/local/bin/perl
print "content-type : text/html\n\n";
print "<HTML>";
print "<HEAD>";
print "<TITLE>Hello world</TITLE>";
print "</HEAD>";
print "<BODY>";
print "Hello world!";
print "</BODY>";
print "</HTML>";
Voyons maintenant un autre exemple, dans lequel le programme CGI effectue uniquement une
redirection vers l'URL http://www.commentcamarche.net :
#! /usr/local/bin/perl
print "location : http://www.commentcamarche.net";
|