4D v12.4Support des CGI |
|||||||||||||||
|
4D v12.4
Support des CGI
|
Emplacement des éléments | URLs correspondants |
(racine du serveur Web) | |
Dossier [mabase] | |
+ mabase.4db (structure) | (http://195.1.2.3/) |
Dossier [cgi-bin] | |
+ compteur.exe | (http://195.1.2.3/cgi-bin/compteur.exe) |
Dossier [Divers] | |
+ Dossier [cgi-bin] | |
++ script.pl | (http://195.1.2.3/Divers/cgi-bin/script.pl) |
L'appel de CGIs en mode manuel requiert l'utilisation de la commande FIXER EXECUTABLE CGI. Cette commande permet notamment d’exécuter un CGI sans que celui-ci soit visible pour l’utilisateur Web dans l’URL.
Pour plus d'informations sur ce point, reportez-vous à la description de cette commande.
L’appel d’un CGI ne modifie jamais l’environnement de 4D (sélections, variables...).
4D n’impose aucune limite de taille de la réponse. Cependant, la durée maximum de traitement allouée au CGI est fixée à 30 secondes. Au-delà de ce délai, le serveur Web retournera une erreur.
Lorsque l’appel d’un CGI génère une erreur, 4D retourne une des réponses suivantes, sous forme de page HTML standard :
Note : Lorsqu'un CGI ne fonctionne pas, vérifiez que les privilèges d'exécution du CGI sont suffisants et que les retours à la ligne dans le script CGI sont corrects.
Ce paragraphe est principalement destiné aux programmeurs souhaitant développer des CGI pour leur bases 4D.
Variables d’environnement
4D définit les variables d’environnement en conformité avec les spécifications CGI/1.1, avec les précisions suivantes :
GATEWAY_INTERFACE : toujours “CGI/1.1”
SERVER_SOFTWARE : toujours de la forme “4D WebStar_D/version”
SERVER_PROTOCOL : toujours “HTTP/1.0”
SERVER_PORT_SECURE : contient “1” si la connexion HTTP est sécurisée, sinon “0”.
PATH_TRANSLATED : contient le chemin d’accès complet de la racine HTML du serveur, auquel est ajouté la portion de chemin qui suit le nom du CGI. Par sécurité, la portion de chemin ne peut contenir les séquences // ou ..
Exemple : Racine du serveur C:/web
Pour un appel CGI du type /cgi-bin/cgi.exe/path, PATH_TRANSLATED vaut “C:/web/path”. Pour un appel CGI du type /cgi-bin/cgi.exe/../path, 4D renvoie l’erreur Interdit.
REMOTE_IDENT : nom d’utilisateur, sinon non définie
HTTP_AUTHORIZATION, HTTP_CONTENT_LENGTH et HTTP_CONTENT_TYPE : non définies
ALL_HTTP et URL sont définies dans le cas d’appels de DLL ISAPI.
CERT_xxx et HTTPS_xxx sont définies si la connexion est sécurisée (pour les DLL uniquement).
Note : La commande FIXER VARIABLE ENVIRONNEMENT permet de définir ces variables.
En plus des variables d’environnement standard, 4D ajoute des variables texte du type FORMVAR_nomvariable :
Ce fonctionnement présente l’avantage de faciliter le traitement des formulaires (il n’est pas nécessaire d’analyser les chaînes a=1&b=2&...), mais rend le CGI spécifique à 4D.
Traitement des réponses retournées par les CGI
Si le nom du CGI (exécutable Windows ou script PERL) débute par nph- (No Parsing Header), 4D retourne la réponse “telle quelle” au client Web. Dans ce cas, il revient au CGI de respecter la norme HTTP. En ce qui concerne les DLL ISAPI, 4D n’analyse jamais la réponse, que le préfixe nph- soit présent ou non.Si ce n’est pas le cas, 4D se charge de renvoyer l’en-tête HTTP :
4D accepte tout type de changement de ligne (Windows-CRLF, Mac OS-CR, Unix-LF) dans l’en-tête de la réponse HTTP et se charge de la reformater.
Dans le cas des DLL ISAPI, 4D accepte les traitements asynchrones (HttpExtensionProc retourne HSE_STATUS_PENDING). L’appel à ServerSupportFunction (HSE_REQ_DONE_WITH_SESSION) doit avoir lieu dans les 30 secondes. Si la fonction TerminateExtension est définie, elle est toujours appelée avec la valeur HSE_TERM_MUST_UNLOAD.
Produit : 4D
Thème : Serveur Web
Nom intl. : Using CGIs
FIXER EXECUTABLE CGI
FIXER VARIABLE ENVIRONNEMENT