Personnalisation du traitement sur le serveur

Le présent rubrique explique comment utiliser les inclusions côté serveur pour insérer des informations dans des programmes CGI et des documents HTML qui sont livrés à un client. Elle évoque également la personnalisation des messages d'erreur du serveur et le mappage des ressources.

Inclusions côté serveur

Les inclusions côté serveur permettent d'ajouter des informations à des programmes CGI et à des documents HTML que le serveur envoie au client lorsqu'il assure la fonction de serveur d'origine (pas aux objets placés dans le proxy ou la mémoire cache). La date en cours, la taille du fichier et la date de la dernière modification sont des exemples d'informations qui peuvent être envoyées au client. La présente section indique le format de commande à respecter pour utiliser les inclusions côté serveur. Elle explique également comment exécuter les commandes pour intégrer correctement les inclusions côté serveur aux programmes CGI et aux documents HTML. Par ailleurs, vous pouvez utiliser les inclusions côté serveur pour personnaliser les pages d'erreur.

Considérations sur les inclusions côté serveur

Avant d'utiliser les inclusions sur le serveur, vous devez prendre en considération les questions de performances, de sécurité et de risques.

Configuration des inclusions côté serveur

Pour activer les inclusions côté serveur à partir des formulaires de configuration et d'administration, sélectionnez Configuration du serveur –> Paramètres de base. Ce formulaire permet d'indiquer si les types d'inclusion côté serveur suivants sont autorisés :

Ce formulaire permet également de sélectionner si les inclusions côté serveur doivent être effectuées pour des textes ou des documents HTML.

Vérifiez également que l'extension du fichier utilisé pour l'inclusion est reconnue. Dans les formulaires de configuration et d'administration, sélectionnez Configuration du serveur –>Types MIME et codage et utilisez le formulaire Types MIME. Les extensions shtml et htmls sont reconnues par défaut.

Pour configurer votre serveur pour les inclusions côté serveur en modifiant les directives dans le fichier de configuration du proxy, voir les sections de référence des directives suivantes :

Format à utiliser pour les inclusions côté serveur

Les commandes d'inclusion doivent être incluses dans le document HTML ou le programme CGI en tant que commentaires. Les commandes s'affichent sous le format suivant :

<!--#balise directive=valeur ... --> 
or 
<!--#balise directive="valeur" ... -->  

Les guillemets placés autour des valeurs sont facultatifs. Toutefois, vous devez les indiquer si vous voulez insérer des espaces.

Directives pour les inclusions côté serveur

La présente section indique les directives acceptées par le système pour les inclusions côté serveur. (Ne confondez pas ces directives avec celles du fichier de configuration du serveur proxy, présentées dans l'Annexe B. Directives du fichier de configuration.)

config—contrôle du traitement des fichiers

Utilisez cette directive pour contrôler certains aspects du traitement des fichiers. Les codes autorisés sont cmntmsg, errmsg, sizefmt et timefmt.

cmntmsg
Utilisez cette balise pour spécifier un message ajouté au début de commentaires ajoutés par d'autres directives. Un texte se trouvant entre une spécification de directive et les balise "-->" est traité comme du commentaire et est ajouté au fichier envoyé au client par le serveur.

Exemple :

<!--#config cmntmsg="[Commentaire]" -->
<!-- #echo var="  " texte supplémentaire -->

Résultat : <!--[Commentaire] texte supplémentaire -->

Par défaut : [les commentaires suivants étaient ajoutés dans la directive]

errmsg
Utilisez cette balise pour indiquer un message envoyé au client si une erreur survient au cours du traitement d'un fichier. Le message est consigné dans le journal des erreurs du serveur.

Exemple :

<!-- #config errmsg="[Une erreur s'est produite]" -->

Par défaut : "[Une erreur s'est produite lors du traitement de la directive]"

sizefmt
Utilisez cette balise pour indiquer le format d'affichage de la taille du fichier. Dans les exemples suivants, bytes est la valeur utilisée pour afficher le nombre d'octets, et abbrev est la valeur utilisée pour afficher le nombre de kilooctets ou de mégaoctets.

Exemple 1 :

<!--#config sizefmt=bytes -->
<!--#fsize file=foo.html -->

Résultat : 1024

Exemple 2 :

<!--#config sizefmt=abbrev -->
<!--#fsize file=foo.html -->

Résultat : 1K

Par défaut : "abbrev"

timefmt
Utilisez cette balise pour indiquer le format d'affichage des dates.

Exemple :

<!--#config timefmt="%D %T" -->
<!--#flastmod file=foo.html -->

Résultat : "10/18/95 12:05:33"

Par défaut : "%a, %d %b %Y %T %Z"

Les formats strftime() suivants sont acceptés avec le code timefmt :

Spécificateur Signification
%% Remplace la valeur par %
%a Remplace la valeur par le nom du jour de la semaine (sous forme abrégée)
%A Remplace la valeur par le nom complet du jour de la semaine
%b Remplace la valeur par le nom du mois (sous forme abrégée)
%B Remplace la valeur par le nom complet du mois
%c Remplace la valeur par la date et l'heure
%C Remplace la valeur par le siècle (année divisée par 100, sous forme tronquée)
%d Remplace la valeur par le jour du mois (01-31)
%D Insère la date sous la forme %m /%d/%y (mois, jour, année)
%e Insère le mois de l'année sous la forme d'une valeur comprise entre 01 et 12. (Sous C POSIX uniquement, zone de deux caractères, justifiée à droite et vierge)
%E[cCxyY] Si l'autre format date/heure n'est pas disponible, les descripteurs %E sont mappés à leurs équivalents non développés (par exemple, %EC est mappé à %C)
%Ec Remplace la valeur par l'autre représentation date et heure
%EC Remplace la valeur par l'année de base (période) en utilisant l'autre représentation
%Ex Remplace la valeur par l'autre représentation des dates
%EX Remplace la valeur par l'autre représentation des heures
%Ey Remplace la valeur par le décalage de %EC (année uniquement) en utilisant l'autre représentation
%EY Remplace la valeur par l'année complète en utilisant l'autre représentation.
%h Remplace la valeur par le nom du mois sous forme abrégée (identique à %b)
%H Remplace la valeur par l'heure (horloge de 23 heures) sous la forme d'un nombre compris entre 00 et 23.
%I Remplace la valeur par l'heure (horloge de 12 heures) sous la forme d'un nombre compris entre 00 et 12)
%j Remplace la valeur par le jour de l'année (001-366)
%m Remplace la valeur par le mois (01-12)
%M Remplace la valeur par les minutes (00-59)
%n Remplace la valeur par une nouvelle ligne
%O[deHlmMSUwWy] Si l'autre format date/heure n'est pas disponible, les descripteurs %E sont mappés à leurs équivalents non développés (par exemple, %Od est mappé à %d)
%Od Remplace la valeur par le jour du mois en utilisant les autres symboles numériques et en indiquant des zéros à gauche, s'il existe d'autres symboles pour zéro (sinon, des espaces apparaissent)
%Oe Remplace la valeur par le jour du mois en utilisant les autres symboles numériques et en indiquant des espaces à gauche.
%OH Remplace la valeur par l'heure (horloge de 24 heures) à l'aide des autres symboles numériques.
%OI Remplace la valeur par l'heure (horloge de 12 heures) à l'aide des autres symboles numériques.
%Om Remplace la valeur par le mois à l'aide des autres symboles numériques.
%OM Remplace la valeur par les minutes en utilisant les autres symboles numériques
%OS Remplace la valeur par des secondes en utilisant les autres symboles numériques
%OU Remplace la valeur par le numéro de la semaine en utilisant les autres symboles numériques (le dimanche représente le premier jour de la semaine, avec des règles correspondant à %U)
%Ow Remplace la valeur par le jour de la semaine (dimanche = 0) en utilisant les autres symboles numériques
%OW Remplace la valeur par le numéro de la semaine en utilisant les autres symboles numériques (le lundi est le premier jour de la semaine)
%Oy Remplace la valeur par l'année (décalage de %C) en utilisant l'autre représentation et les autres symboles numériques.
%p Remplace la valeur par l'équivalent local des abréviations AM ou PM
%r Remplace la valeur par une chaîne équivalent à %I:%M:%S %p
%R Remplace la valeur par l'heure en utilisant la notation de 24 heures(%H:%M)
%S Remplace la valeur par des secondes (00-61)
%t Remplace la valeur par une tabulation
%T Remplace la valeur par une chaîne équivalent à %H:%M:%S
%u Remplace la valeur par le jour de la semaine sous la forme d'un nombre (1-7 à 7), 1 représentant le lundi
%U Remplace la valeur par le numéro de la semaine (00-53), le premier jour de la semaine étant le dimanche
%V Remplace la valeur par le numéro de la semaine (01-53), le premier jour de la semaine étant le lundi
%w Remplace la valeur par le jour de la semaine (0-6). Le dimanche correspond à 0
%W Remplace la valeur par le numéro de la semaine (01-53), le premier jour de la semaine étant le lundi
%x Remplace la valeur par la représentation de date appropriée
%X Remplace la valeur par la représentation de l'heure appropriée
%y Remplace la valeur par la représentation de l'année dans le siècle en 2 chiffres
%Y Remplace la valeur par l'année complète en 4 chiffres
%Z Remplace la valeur par le nom du fuseau horaire. Aucun caractère n'apparaît si le fuseau horaire est inconnu.

La configuration du système d'exploitation détermine si les mois et les années apparaissent sous forme abrégée ou complète.

echo — affiche les valeurs des variables

Utilisez cette directive pour afficher la valeur des variables d'environnement indiquées par la balise var. Si la variable est introuvable, la valeur (None) s'affiche. La commande echo peut également afficher une valeur définie par les directives set ou global. Les variables d'environnement suivantes peuvent s'afficher :

DATE_GMT
Date et heure en cours au format GMT (Greenwich Mean Time). Le formatage de cette variable est défini à l'aide de la directive config timefmt.
DATE_LOCAL
Date et heure locales en cours. Le formatage de cette variable est défini à l'aide de la directive config timefmt.
DOCUMENT_NAME
Nom du document supérieur. Si le document HTML a été généré par un script CGI, cette variable contient le nom du script CGI.
DOCUMENT_URI
Adresse URL complète demandée par le client, sans la chaîne de la demande.
LAST_MODIFIED
Date et heure de la dernière modification du document en cours. Le formatage de cette variable est défini à l'aide de la directive config timefmt.
QUERY_STRING_UNESCAPED
Demande de recherche envoyée par le client. Cette valeur n'est pas définie sauf si le document HTML a été généré par un script CGI.
SSI_DIR
Chemin d'accès au fichier en cours, par rapport à SSI_ROOT. Si le fichier en cours se trouve dans SSI_ROOT, cette valeur correspond à "/".
SSI_FILE
Nom du fichier en cours.
SSI_INCLUDE
Valeur utilisée dans la commande d'inclusion qui a extrait le fichier en cours. Elle n'est pas définie pour le fichier initial.
SSI_PARENT
Nom et chemin du fichier contenant la commande d'inclusion qui a extrait le fichier en cours, par rapport à SSI_ROOT.
SSI_ROOT
Chemin d'accès au fichier initial. Toutes les demandes d'inclusion doivent se trouver dans ce répertoire ou dans l'un de ses enfants.

Exemple :

<!--#echo var=SSI_DIR -->

exec — définit les programmes CGI

Utilisez cette directive pour inclure les données générées en sortie par un programme CGI. La directive exec supprime les en-têtes HTTP générés en sortie par le programme CGI, sauf les suivants :

Content-type
Détermine si le corps du document en sortie doit être analysé pour d'autres inclusions
Content-encoding
Détermine si une conversion EBCDIC vers ASCII est requise
Last-modified
Remplace la valeur en cours de l'en-tête last-modified sauf si elle est postérieure à la valeur indiquée.

cgi — définit l'adresse URL d'un programme CGI

Utilisez cette directive pour indiquer l'URL d'un programme CGI.

Dans cet exemple, program correspond au programme CGI à exécuter ; path_info et query_string représentent un ou plusieurs paramètres transmis au programme en tant que variables d'environnement :

<!--#exec cgi="/cgi-bin/program/path_info?query_string" -->

Cet exemple illustre l'utilisation des variables :

<!--#exec cgi="&path;&cgiprog;&pathinfo;&querystring;" -->

flastmod— affiche la date et l'heure de la dernière modification du document

Utilisez cette directive pour afficher la date et l'heure de la dernière modification du document. Le formatage de cette variable est défini par la directive config timefmt. Les balises file et virtual peuvent être utilisées avec cette directive. Leurs significations figurent ci-dessous.

Formats de la directive :

<!--#flastmod file="/chemin/fichier" --> 
<!--#flastmod virtual="/chemin/fichier" -->
file
Utilisez ce code pour indiquer le nom du fichier. Pour flastmod, fsize et include, on suppose que file se trouve dans le chemin SSI_ROOT, s'il est précédé du signe '/'. Sinon, il se trouve dans le chemin SSI_DIR. Le fichier doit exister dans SSI_ROOT ou dans l'un de ses descendants. Exemple :
<!--#flastmod file="/chemin/fichier" -->
virtual
Utilisez ce code pour indiquer l'adresse URL d'un chemin d'accès virtuel à un document. Pour flastmod, fsize et include, le code virtual est toujours transmis via les directives de mappage du serveur. Exemple :
<!--#flastmod virtual="/chemin/fichier" -->

Exemple :

<!--#flastmod file="foo.html" -->

Résultat : 12mai96

fsize — affiche la taille du fichier

Utilisez cette directive pour afficher la taille du fichier indiqué. Le formatage de cette variable est défini par la directive config sizefmt. Les balises file et virtual peuvent être utilisées avec cette directive. Leur signification est identique à celle définie précédemment pour la directive flastmod.

Exemple :

<!--#fsize file="/chemin/fichier" -->
<!--#fsize virtual="/chemin/fichier" -->

Résultat : 1K

global — définit les variables globales

Utilisez cette directive pour définir les variables globales qui peuvent être répercutées ultérieurement par ce fichier ou par d'autres fichiers inclus.

Exemple :

<!--#global var=VariableName value="SomeValue" -->

Par exemple, si vous voulez faire référence à un document parent au-delà de la frontière « virtual », vous devez définir une variable globale DOCUMENT_URI. Vous devez également référencer la variable globale dans le document enfant. Cet exemple indique le code HTML à insérer dans le document parent.

<!--#global var="PARENT_URI" value=&DOCUMENT_URI; -->

Cet exemple indique le code HTML à insérer dans le document enfant.

<!--#flastmod virtual=&PARENT_URI; -->

include — inclut un document dans les données en sortie

Utilisez cette directive pour inclure le texte d'un document dans les données générées en sortie. Les balises file et virtual peuvent être utilisées avec cette directive. Leur signification est identique à celle qui a été définie ci-dessus pour la directive flastmod.

set — définit les variables à répercuter (écho)

Utilisez cette directive pour définir une variable qui pourra être répercutée ultérieurement, mais seulement dans ce fichier.

Exemple :

 <!--#set var=valeur "Variable 2"="autre_valeur" -->

Lors de la définition de la directive, vous pouvez répercuter une chaîne située au milieu de valeur. Exemple :

<!--#include file="&nom_fichier;" -->

Variables : Une directive définie côté serveur est généralement suivie d'une directive écho, de sorte qu'elle cherche la variable définie, répercute l'endroit où la variable est trouvée et poursuit l'exécution de la fonction. Elle peut contenir plusieurs références à des variables. La définition côté serveur permet également de répercuter une variable déjà définie. Si aucune variable définie n'est trouvée, aucune donnée ne s'affiche

Lorsqu'une définition côté serveur rencontre une référence de variable dans une directive d'inclusion côté serveur, elle tente de la résoudre du côté serveur. Dans l'exemple suivant, sur la deuxième ligne, la variable côté serveur ,&index;, est associée à la chaîne var pour générer le nom de la variable var1. On attribue ensuite une valeur à la variable &var1; en supprimant le & dans &ecirc; de sorte qu'elle n'est pas reconnue comme une variable. Elle est utilisée comme une chaîne pour générer la valeur fr&ecirc;d ou fred avec accent circonflexe sur le "e". La variable &ecirc; est une variable côté client.

<!--#set var=valeur "index" ="1" --> 
<!--#set var=valeur "var&index;"="fr\&ecirc;d" --> 
<!--#echo var="var1" -->

Les caractères qui peuvent être ignorés (appelés variables ignorées) sont précédés d'une barre oblique inversée (\) et comprennent :

Caractère Signification
\a Alerte (sonnerie)
\b Retour arrière
\f Nouveau formulaire (nouvelle page)
\n Nouvelle ligne
\r Retour chariot
\t Tabulation horizontale
\v Tabulation verticale
\' Apostrophe
\" Guillemet
\? Point d'interrogation
\\ Barre oblique inversée
\- Tiret
\. Point
\& Perluète

Personnalisation des messages d'erreur

Vous pouvez personnaliser les messages d'erreur renvoyés par Caching Proxy et définir des messages spécifiques à utiliser dans des conditions d'erreur particulières. Dans les formulaires de configuration et d'administration, sélectionnez Configuration du serveur –> Personnalisation des messages d'erreur. Ce formulaire permet de sélectionner une condition d'erreur et d'indiquer le fichier HTML associé.

Pour personnaliser des messages d'erreur en modifiant les directives dans le fichier de configuration du proxy, voir la section de référence de la directive ErrorPage — Spécifie un message personnalisé pour une condition d'erreur particulière.

Réacheminement RTSP (Real Time Streaming Protocol)

S'applique aux configurations avec proxy inversé uniquement.

WebSphere Application Server, Version 8.0 intègre la prise en charge des données en continu au moyen de la fonction Redirector RTSP. RTSP permet ainsi à Caching Proxy d'agir comme le premier point de contact avec les lecteurs multimédia et de réacheminer les demandes qui leur sont adressées vers le serveur proxy ou le serveur de contenu capable de fournir le contenu demandé.

Le protocole RTSP (Real Time Streaming Protocol) est défini dans RFC 2326. Il s'agit d'un protocole Internet standard qui contrôle les flux de données. Bien qu'il n'ait pas la capacité technique de distribuer les flux de données, il est suffisamment flexible pour contrôler les flux de données non liés à la lecture de données audio et vidéo.

A propos du réacheminement RTSP

La fonction de réacheminement RTSP permet à Caching Proxy de réacheminer les requêtes concernant les sessions multimédia en continu contrôlées par RTSP. Les types de média concernés sont les suivants :

Tout lecteur capable de se connecter au port RTSP (numéro 554 en général) d'un serveur proxy peut utiliser cette structure dans Caching Proxy pour transmettre ses demandes à la fonction de réacheminement RTSP.

La fonction de réacheminement RTSP ne stocke pas en mémoire cache les présentations multimédia et ne les traite pas en tant que proxy. Pour remplir l'une de ces fonctions, ou les deux, la fonction de réacheminement RTSP doit être associée à un serveur tiers de mise en mémoire cache des données en continu. Caching Proxy, doté de la fonction de réacheminement RTSP, doit être connectée via le réseau à un ou plusieurs serveurs proxy RTSP.

Limites de la fonction RTSP

Cette fonction présente la limitation suivante :

Actuellement, seule la technologie RealNetworks est prise en charge. Cette technologie inclut le serveur proxy RealProxy, le serveur d'origine RealServer et le lecteur multimédia RealPlayer.

Amélioration de la fonction RTSP

Auparavant, toutes les demandes dirigées vers le même serveur d'origine et en quête de n'importe quelle URL étaient réacheminées de la même manière par la fonction RTSP. Il était impossible de procéder au réacheminement en fonction des noms de fichiers ou d'autres portions de l'URL demandée. Cette limitation ne s'applique plus. La fonction de réacheminement RTSP utilise désormais l'URL complète des demandes reçues ainsi que la valeur de seuil (rtsp_proxy_threshold) définie dans le fichier de configuration de Caching Proxy pour déterminer s'il faut réacheminer la demande du client vers le serveur d'origine ou vers un serveur proxy. Les demandes destinées au même serveur d'origine sont maintenant traitées individuellement.

Configuration du réacheminement RTSP

Les directives du fichier de configuration suivantes permettent de contrôler le réacheminement RTSP. Les paramètres de ces directives ne sont pas régénérés à la suite du redémarrage du serveur. Les modifications sont prises en compte uniquement après l'arrêt complet et le redémarrage du serveur.