CGI signifie Common Gateway Interface . Il s'agit d'un protocole standard permettant aux serveurs Web d'exécuter des programmes et de générer une sortie pour les navigateurs Web. Le programme est appelé programme CGI (ou script CGI). Il s'exécute au nom du serveur Web pour produire une sortie lorsqu'une URL particulière est demandée par le navigateur Web de l'utilisateur.
Un CGI améliore un site Web de plusieurs façons. De l'authentification d'un utilisateur à la fourniture d'une application d'achat à grande échelle, les CGI sont au cœur même de la dynamique et de l'interactivité du Web. Voici quelques-uns des principaux avantages de l'utilisation des CGI pour améliorer l'expérience utilisateur.
Un fichier HTML (ainsi que JavaScript et CSS) est servi directement par le serveur Web. Un programme CGI, en revanche, est exécuté par le serveur Web lorsqu'une URL particulière est demandée. Il est utilisé pour répondre aux demandes nécessitant un accès à des informations dynamiques, telles que celles résidant dans une base de données. Un exemple serait l'authentification d'un utilisateur pour autoriser l'accès :le nom d'utilisateur et le mot de passe pourraient être stockés dans une base de données, et une demande de validation de l'utilisateur aurait besoin d'accéder à ces informations. Pour répondre à cette demande, le serveur Web exécuterait un programme CGI qui rechercherait les informations et validerait l'utilisateur.
Un serveur Web exécute un logiciel de serveur HTTP qui offre la possibilité de servir des fichiers HTML, ainsi que d'exécuter des programmes CGI pour générer une sortie à la volée. Le logiciel du serveur HTTP est configuré par l'administrateur du serveur Web pour exécuter des programmes spécifiques lorsque des URL correspondant à des modèles spécifiques sont demandées.
Lorsque le navigateur d'un utilisateur fait une demande à une URL particulière, le navigateur envoie tout un tas d'informations, sous la forme d'en-têtes HTTP et éventuellement du corps HTTP. Certains de ces éléments peuvent inclure :
Lorsqu'un CGI est exécuté pour répondre à cette demande, le serveur transmet toutes ces informations au programme CGI. Le CGI peut utiliser tout ou partie de ces informations pour traiter la demande et personnaliser la sortie pour l'utilisateur.
L'une des principales utilisations des CGI consiste à traiter des formulaires HTML.
Un formulaire HTML est un dispositif d'interaction avec l'utilisateur et fournit une variété de contrôles permettant à l'utilisateur de fournir une entrée. Lorsque l'utilisateur clique sur Envoyer (ou quelque chose de similaire) sur le formulaire, le navigateur Web agrège les informations du formulaire et les envoie à l'URL cible indiquée dans le formulaire. Le serveur Web, à son tour, appelle généralement un programme CGI et envoie toutes les entrées collectées auprès de l'utilisateur. Cette interaction est appelée formulaire POST, un terme technique indiquant la méthode d'envoi du contenu du formulaire au CGI. Le CGI traite le contenu du formulaire et produit une réponse appropriée à envoyer au navigateur.
Voici un exemple de programme CGI écrit en python. Il peut être déployé sur un serveur Web afin d'être accessible à partir d'une URL similaire à :http://www.example.com/cgi-bin/env.cgi. Lorsqu'il est invoqué, le CGI signale toutes les variables qu'il a reçues dans son environnement à partir du serveur Web. C'est à peu près aussi simple qu'un programme CGI peut l'être.
#!/usr/bin/python
importer le système d'exploitation
print "Type de contenu :text/plain
"
pour la clé dans os.environ :
touche d'impression, "=>\"", os.environ[clé], "\""
Les CGI font partie des serveurs Web depuis presque le début du Web. Le tout premier serveur Web, le serveur Web NCSA HTTPd, a démarré avec la prise en charge du service de fichiers statiques uniquement. Par la suite, il a été reconnu que l'exécution d'un script en réponse à une demande d'URL permettait au serveur Web de générer du contenu dynamique, et la spécification CGI était née.
Les premiers programmes CGI étaient de simples scripts écrits dans un langage tel que Perl, TCL, Shell, etc. Il pouvait également être écrit dans un langage compilé tel que C/C++, mais cela nécessitait une étape supplémentaire de compilation du programme pour créer l'exécutable. CGI.
Au fur et à mesure que les CGI devenaient plus complexes et que les demandes des utilisateurs augmentaient, il a été reconnu que la création d'un processus CGI séparé pour traiter chaque demande était plutôt trop lourde en termes de surcharge de mémoire et de processeur. Surtout lorsque le traitement de la demande prend moins de temps que la surcharge de création d'un nouveau processus.
À ce stade, les serveurs Web ont commencé à intégrer des interpréteurs de script complets afin que les demandes des utilisateurs puissent être traitées dans un thread distinct. au sein d'un processus de serveur Web unique. Cela a amélioré l'efficacité du traitement des demandes et réduit les temps de réponse.
Cela a coïncidé avec l'arrivée de nouveaux langages spécifiquement conçus pour le web, comme PHP. L'interpréteur PHP a commencé sa vie comme un programme CGI lui-même. Dans le cadre du traitement des requêtes, il analyse le fichier demandé pour les directives PHP et exécute les commandes qu'il contient.
Aujourd'hui, en plus des scripts CGI, il existe de nombreuses technologies permettant d'exécuter du code sur le serveur en réponse à une requête.
Utilisez-vous des scripts CGI dans une partie du site Web de votre entreprise ? Avez-vous rencontré des problèmes particuliers lors du déploiement ou de la maintenance des scripts CGI ? Discutez ci-dessous dans les commentaires.