Utilisation de règles de trafic sortant pour ajouter du code de suivi d’analytique web
par Ruslan Yakushev
Cette section de la documentation s’applique au module de réécriture d’URL version 2.0 pour IIS 7.
Cette procédure pas à pas vous guide tout au long de la création d’une règle de réécriture de trafic sortant IIS qui insère un script de suivi d’analytique web dans des pages web.
Prérequis
Pour effectuer cette procédure pas à pas, vous devez avoir les éléments suivants :
- Module de réécriture d’URL 2.0 RCrelease installé.
Introduction
L’objectif d’un service d’analytique web est de fournir aux éditeurs de sites web des informations statistiques sur les visiteurs de leurs sites. Ces informations permettent aux éditeurs de site d’optimiser le contenu, les publicités et les offres de service afin d’augmenter la satisfaction des clients et le ROI. En règle générale, les services d’analytique web en ligne comme Google Analytics ou Omniture fonctionnent en collectant des données sur les visiteurs du site web. Quand les propriétaires de site demandent des rapports, le fournisseur d’analytique web traite ces données et les présente aux propriétaires de site dans un format pratique et facile à comprendre. Pour activer la collecte de données nécessaire pour l’analytique, les propriétaires de sites web doivent instrumenter toutes les pages d’un site web avec un script de suivi émis par le fournisseur de services d’analyse web
Dans certains cas, l’ajout de code de suivi aux pages web est une tâche simple. Toutefois, dans de nombreux cas, il peut être nécessaire d’ajouter manuellement le script à de nombreuses pages web. Dans ce cas, l’instrumentation de l’analytique web devient une tâche coûteuse et fastidieuse. La fonctionnalité de réécriture de la réponse dans le module de réécriture d’URL version 2 peut vous aider dans ces situations en exécutant des règles de trafic sortant qui changent le contenu de la réponse à la volée.
Création d’une règle de réécriture de trafic sortant
Pour commencer, vous créez une règle de réécriture de trafic sortant qui ajoute un extrait de code JavaScript dans la réponse HTML. L’extrait de code est inséré immédiatement avant la balise </body> fermante, comme dans l’illustration suivante
...
<script type='text/javascript'>
//Your web analytics tracking code goes here...
</script>
</body>
AVERTISSEMENT: Dans cet exemple particulier, le code JavaScript est supposé provenir d’une source approuvée et doit être inséré dans la page HTML telle quelle. Dans de nombreux autres cas, quand les en-têtes de réponse ou le contenu de la réponse sont modifiés par une règle de réécriture de trafic sortant, des précautions supplémentaires doivent être prises pour vérifier que le texte inséré dans la réponse ne contient aucun code exécutable côté client, ce qui peut entraîner des vulnérabilités de script intersites. Cela est particulièrement important quand la règle de réécriture utilise des données non approuvées, comme des en-têtes HTTP ou la chaîne de requête, pour générer la chaîne à insérer dans la réponse HTTP. Dans ce cas, la chaîne de remplacement doit être encodée au format HTML avec la fonction HtmlEncode, par exemple :
<action type="Rewrite" value="{HtmlEncode:{HTTP_REFERER}}" />
Pour créer la règle de trafic sortant :
- Ouvrez le Gestionnaire IIS
- Sélectionnez « Site web par défaut »
- Dans la vue des fonctionnalités, sélectionnez « Module de réécriture d’URL »
- Dans le volet Actions à droite, cliquez sur « Ajouter des règles... ». Dans la boîte de dialogue « Ajouter des règles », sélectionnez « Règle vide » sous la catégorie « Règles de trafic sortant », puis cliquez sur OK.
Vous devez maintenant définir la règle sortante réelle. Dans le module de réécriture d’URL 2.0, une règle de réécriture de trafic sortant est définie en spécifiant les informations suivantes :
- Nom de la règle.
- Condition préalable facultative qui contrôle si cette règle doit être appliquée à une réponse.
- Modèle à utiliser pour la correspondance de la chaîne dans la réponse.
- Ensemble facultatif de conditions.
- Action à effectuer si un modèle est trouvé et que toutes les vérifications de condition ont réussi.
Nommage de la règle
Dans la zone de texte « Nom », entrez un nom qui identifie de manière unique la règle, par exemple : « Ajouter un script de suivi ».
Définition d’une condition préalable
Une condition préalable est utilisée pour déterminer si l’évaluation des règles de trafic sortant doit être effectuée sur une réponse. Par exemple, si une règle modifie le contenu HTML, seules les réponses HTTP dont l’en-tête content-type est défini sur « text/html » doivent être évaluées par rapport à cette règle. L’évaluation des règles de trafic sortant et la réécriture de contenu constituent une opération intensive du processeur qui peut affecter négativement les performances d’une application web. Par conséquent, utilisez des conditions préalables pour limiter les cas d’application de règles de trafic sortant.
Comme la règle que vous créez doit être appliquée uniquement sur les réponses HTML, vous définissez une condition préalable qui vérifie si l’en-tête de réponse HTTP content-type est égal à « text/html ».
Pour définir une condition préalable :
Dans la liste des conditions préalables, sélectionnez « <Créer une condition préalable...> ».
Vous êtes dirigé vers la boîte de dialogue de l’éditeur de condition préalable, où vous devez définir la condition préalable. Spécifiez les paramètres de condition préalable de la façon suivante :
Nom : « IsHTML »
En utilisant : « Expressions régulières »
Cliquez sur « Ajouter » pour afficher la boîte de dialogue « Ajouter une condition ». Dans cette boîte de dialogue, spécifiez :
Entrée de la condition : « {RESPONSE_CONTENT_TYPE} »
Vérifier si la chaîne d’entrée : « Correspond au modèle »
Modèle : « ^text/html »
Cliquez sur OK pour enregistrer la condition préalable et revenir à la page « Modifier la règle ».
Définition d’une étendue de correspondance
La règle de réécriture de trafic sortant peut fonctionner sur le contenu d’un en-tête HTTP ou sur le contenu du corps de la réponse. Cette règle doit modifier le contenu de la réponse, donc, dans la liste déroulante « Étendue correspondante » choisissez « Réponse ».
Définition d’un modèle
Dans la liste déroulante « En utilisant : », choisissez l’option « Correspondance exacte ».
Dans la zone de texte « Modèle », entrez la chaîne suivante :
</body>
Définition d’une action
Choisissez le type d’action « Réécrire » listé dans la zone de groupe « Action ». Dans la zone de texte « Valeur », entrez la chaîne suivante :
<script type='text/javascript'>//Your web analytics tracking code goes here...</script></body>
Cette chaîne spécifie la nouvelle valeur à utiliser pour remplacer la chaîne trouvée dans une réponse. Dans ce cas particulier, la chaîne « </body> » est remplacée par l’extrait de code JavaScript suivi de la balise fermante du corps HTML.
Laissez les valeurs par défaut pour tous les autres paramètres. La page de propriétés « Modifier la règle » doit ressembler à la page suivante :
Enregistrez la règle en cliquant sur l’action « Appliquer » à droite.
Consultation de la règle de réécriture dans le fichier de configuration
Les règles de réécriture sont stockées dans le fichier applicationHost.config ou web.config. Pour vérifier la configuration de la règle que nous venons de créer, ouvrez un fichier web.config situé dans %SystemDrive%\inetput\wwwroot\
. Dans ce fichier, vous devez voir la section <rewrite>
qui contient toutes les définitions de règle :
<rewrite>
<outboundRules>
<rule name="Add tracking script" patternSyntax="ExactMatch" preCondition="">
<match filterByTags="None" pattern="</body>" />
<action type="Rewrite" value="<script type='text/javascript'>//Your web analytics tracking code goes here...</script></body>" />
</rule>
<preConditions>
<preCondition name="IsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
Test de la règle
Pour vérifier que la règle ajoute correctement un code JavaScript à la page web, demandez cette URL http://localhost/iisstart.htm
.
Une fois que vous avez obtenu une réponse du serveur, ouvrez le code source HTML réel (si vous utilisez Internet Explorer 8, accédez à Page --> Voir la source). Le code HTML de la réponse contient le code JavaScript avant la balise fermante du corps HTML :
Résumé
Dans cette procédure pas à pas, vous avez appris à utiliser des règles de trafic sortant dans le module de réécriture d’URL version 2 pour modifier le contenu de la réponse HTTP à la volée. Cette fonctionnalité est très utile quand vous devez effectuer des modifications mineures des réponses HTTP générées par les applications web, mais que vous n’avez pas le contrôle de l’application ou qu’il n’est pas pratique de faire des changements à grande échelle dans l’application.