VARIABLES D'ENVIRONNEMENT CGI
1 - Variables serveur
Voici la liste des variables d'environnement positionné à chaque requête (spécifique au serveur)
- SERVER_SOFTWARE
- Nom et version du serveur et éxécutant l'opération. Format : nom/version
- SERVER_NAME
- Adresse du serveur. Alias DNS, ou addresse IP tel qu'il a été spécifié dans la requête dans l'URL.
- GATEWAY_INTERFACE
- Numéro de version de l'interface CGI qu'utilise le serveur. Format : CGI/version
2 - Variables client
Les variables d'environnement suivantes sont spécifiques aux requêtes, elles ont été placées par le navigateur client.
Voici la séquence pour obtenir à l'aide d'un script CGI en Perl la liste des variables d'environnement.
#!/usr/bin/perl
print "Content-type: text/html\n\n";
while(my ($n,$v) = each(%ENV)) {
print "$n=$v<br>";
}
- SERVER_PROTOCOL
- Nom et numéro de version du protocole qui lancé la requête. Format : protocole/Numero. Ex: HTTP/1.1
- SERVER_PORT
- Le port du serveur visé. Ex: 80
- REQUEST_METHOD
- Méthode demandée. Pour HTTP, sont possibles "GET", "HEAD", "POST", etc.
- PATH_INFO
- L'URL après la partie http://<adresse>/ donné par le client. En d'autres termes, l'adresse sur l'arborescence du serveur.
- PATH_TRANSLATED
- Le serveur effectue une transformation de PATH_INFO, donne l'adresse réelle du document (et non une adresse virtuelle).
- SCRIPT_NAME
- L'adresse du script utilisé. Utile pour l'auto-référence dans une URL d'un script.
- QUERY_STRING
- Il s'agit de l'information placée à la suite du point d'interrogation dans l'URL dans le cas d'une requête GET. Il s'agit des paramètres du script avec cette méthode. Chaine uuencodé.
- REMOTE_HOST
- Le nom DNS de la machine. Si le serveur n'obtient pas l'information, le champ est positionné à vide et seule la variable REMOTE_ADDR sera positionné.
- REMOTE_ADDR
- L'adresse IP du client émettant la requête.
- AUTH_TYPE
- Si le serveur supporte l'authentification client et que le script est protégé, il s'agit du protocole utilisé par l'utilisateur.
- REMOTE_USER
- Si le serveur supporte l'authentification client et que le script est protégé, il s'agit du nom d'utilisateur.
- REMOTE_IDENT
- Si le protocole HTTP du serveur supporte l'identification définié dans la RFC 931, il s'agit du nom d'utilisateur. L'usage veut que cette variable ne soit utilisée que pour la connection.
- CONTENT_TYPE
- Type des données soumises à l'aide des méthodes POST et PUT.
- CONTENT_LENGTH
- Longueur des données envoyées par le client.
- HTTP_ACCEPT
- Types MIME supportés par le client, tel que spécifié par les entêtes
de HTTP. Chaque item de la liste doit être séparé par une virgule,
comme spécifié dans la norme HTTP.
Format: type/subtype, type/subtype - HTTP_USER_AGENT
- Le browser utilisé par le client.
Format general : software/version library/version.
3 - Champs supplémentaires
En addition de cela, les lignes d'entêtes envoyées par le client, si jamais il y en a, sont préfixées par le préfixe HTTP_ suivi du nom de l'entête.Tout caractère - dans le nom sera changé en _. Le serveur doit exclure les champs déjà existants, comme Authorization, Content-type, et Content-length.
Si nécessaire, le serveur peut choisir d'exlure une ou toutes les entêtes si celles-ci pertubent le système.
Un exemple de cela est la variable HTTP_ACCEPT qui est définie dans CGI/1.0. Un autre exemple est le champ User-Agent.