|
La Common Gateway Interface (CGI) est un protocole standard permettant aux serveurs Web d'exécuter des programmes externes, généralement des scripts, et de renvoyer la sortie au client Web (généralement un navigateur Web). Il agit comme un pont entre le serveur Web et les autres applications. Voici un aperçu de son fonctionnement :
1. Demande du client : Un utilisateur interagit avec une page Web (par exemple, remplit un formulaire, clique sur un lien) ce qui déclenche une requête auprès du serveur Web. Cette requête inclut souvent des paramètres ou des données que le script doit traiter.
2. Le serveur reçoit la demande : Le serveur Web reçoit la demande et identifie qu'elle doit être traitée par un script CGI. Ceci est généralement déterminé par l'URL (par exemple, une extension « .cgi ») ou la configuration du serveur.
3. Le serveur exécute le script : Le serveur appelle le script CGI. Cela implique la création d'un nouveau processus dans lequel le script doit s'exécuter, garantissant ainsi l'isolation de sécurité entre le script et le serveur lui-même. Ceci est crucial, car un script CGI compromis pourrait potentiellement affecter l'ensemble du serveur.
4. Demande de processus de script : Le script reçoit des entrées du serveur, notamment les paramètres de requête du client (comme les données du formulaire), les variables d'environnement (comme l'adresse IP de l'utilisateur) et les entrées standard. Il traite ensuite ces informations et génère une sortie.
5. Le script envoie une réponse : Le script renvoie sa sortie au serveur Web via la sortie standard (stdout) et l'erreur standard (stderr). La sortie inclut généralement les en-têtes HTTP (code de statut, type de contenu, etc.) et le contenu réel à afficher dans le navigateur (par exemple, HTML, images, texte).
6. Le serveur envoie une réponse au client : Le serveur Web reçoit la sortie du script, vérifie les en-têtes HTTP et renvoie la réponse au navigateur Web du client. Le navigateur restitue ensuite le contenu reçu.
Aspects clés et limites :
* Sécurité : Étant donné que les scripts CGI s'exécutent en tant que processus distincts, des mesures de sécurité minutieuses sont essentielles. Toutes les vulnérabilités d'un script CGI pourraient être exploitées.
* Performances : La création d'un nouveau processus pour chaque demande peut nécessiter beaucoup de ressources, en particulier en cas de charge importante. Cela conduit à des performances plus lentes par rapport aux approches plus modernes.
* Indépendance linguistique : Les scripts CGI peuvent être écrits dans n'importe quel langage de programmation capable de produire le résultat requis. Cette flexibilité est un avantage non négligeable.
* Variables d'environnement : Le serveur Web fournit un ensemble de variables d'environnement au script CGI, offrant des informations contextuelles importantes.
* En-têtes : Le script est responsable de la sortie des en-têtes HTTP corrects pour indiquer le type de contenu (par exemple, « texte/html », « image/jpeg »).
Alternatives modernes :
Bien que CGI soit toujours fonctionnel, il a été largement remplacé par des technologies plus efficaces et sécurisées telles que :
* FastCGI : Améliore les performances en gardant les processus de script actifs, évitant ainsi la surcharge de création de processus pour chaque requête.
* WSGI (Python) : Une interface standardisée entre les applications Web Python et les serveurs Web.
* Alternatives CGI pour d'autres langages : La plupart des frameworks Web modernes offrent des mécanismes intégrés pour gérer les requêtes plus efficacement que de s'appuyer directement sur CGI.
En résumé, CGI offre aux serveurs Web un moyen fondamental d'interagir avec des programmes externes, mais souffre de problèmes de performances et de sécurité qui ont conduit à son déclin au profit d'approches plus modernes. Comprendre CGI est toujours utile pour comprendre l'histoire et les principes sous-jacents du développement d'applications Web.
|