Uso delle regole in uscita per aggiungere codice di rilevamento di Analisi Web
Questa sezione della documentazione si applica al modulo di riscrittura URL versione 2.0 per IIS 7.
Questa procedura dettagliata illustra come creare una regola di riscrittura in uscita IIS che inserisce lo script di rilevamento di Analisi Web nelle pagine Web.
Prerequisiti
Per eseguire questa procedura dettagliata, è necessario disporre degli elementi seguenti:
- URL Rewrite Module 2.0 RCrelease installato.
Introduzione
Lo scopo di un servizio di analisi Web è fornire agli editori di siti Web informazioni statistiche sui visitatori dei siti. Queste informazioni consentono agli editori del sito di ottimizzare i contenuti, gli annunci e le offerte di servizi per aumentare la soddisfazione dei clienti e il ROI. In genere, i servizi di analisi Web online, ad esempio Google Analytics o Omniture, raccolgono dati sui visitatori del sito Web. Quando i proprietari del sito richiedono report, il provider di analisi Web elabora questi dati e lo presenta ai proprietari del sito in un formato pratico e facile da comprendere. Per abilitare la raccolta dati necessaria per l'analisi, i proprietari del sito Web devono instrumentare tutte le pagine di un sito Web con uno script di rilevamento rilasciato dal provider di servizi di analisi Web
In alcuni casi, l'aggiunta di codice di rilevamento alle pagine Web è un'attività semplice. Tuttavia, in molti casi potrebbe essere necessario aggiungere manualmente lo script a numerose pagine Web. In questi casi, la strumentazione di analisi Web diventa un'attività costosa e dispendiosa in termini di tempo. La funzionalità di riscrittura della risposta nel modulo di riscrittura URL versione 2 può essere utile in queste situazioni eseguendo le regole in uscita che modificano il contenuto della risposta in tempo reale.
Creazione di una regola di riscrittura in uscita
Per iniziare, si creerà una regola di riscrittura in uscita che aggiunge un frammento di codice JavaScript nella risposta HTML. Il frammento di codice viene inserito immediatamente prima del tag /body> di chiusura<, come illustrato nella figura seguente
...
<script type='text/javascript'>
//Your web analytics tracking code goes here...
</script>
</body>
AVVERTIMENTO: In questo particolare esempio si presuppone che il codice JavaScript provena da un'origine attendibile e che venga inserito nella pagina HTML così come è. In molti altri casi, quando le intestazioni di risposta o il contenuto della risposta viene modificato da una regola di riscrittura in uscita, è necessario prestare particolare attenzione per assicurarsi che il testo inserito nella risposta non contenga codice eseguibile lato client, che può causare vulnerabilità di scripting tra siti. Ciò è particolarmente importante quando la regola di riscrittura usa dati non attendibili, ad esempio intestazioni HTTP o stringa di query, per compilare la stringa che verrà inserita nella risposta HTTP. In questi casi, la stringa di sostituzione deve essere codificata in formato HTML usando la funzione HtmlEncode , ad esempio:
<action type="Rewrite" value="{HtmlEncode:{HTTP_REFERER}}" />
Per creare la regola in uscita:
- Aprire Gestione IIS
- Selezionare "Sito Web predefinito"
- Nella visualizzazione funzionalità selezionare "URL Rewrite Module" (Modulo di riscrittura URL)
- Nel riquadro Azioni sul lato destro fare clic su "Aggiungi regole...". Nella finestra di dialogo "Aggiungi regole" selezionare la "Regola vuota" nella categoria "Regole in uscita" e fare clic su OK.
È ora necessario definire la regola effettiva in uscita. Nel modulo di riscrittura URL 2.0 viene definita una regola di riscrittura in uscita specificando le informazioni seguenti:
- Nome della regola.
- Precondizione facoltativa che controlla se questa regola deve essere applicata a una risposta.
- Modello da usare per la corrispondenza della stringa nella risposta.
- Set facoltativo di condizioni.
- Azione da eseguire se viene trovata una corrispondenza con un criterio e tutti i controlli delle condizioni hanno avuto esito positivo.
Denominazione della regola
Nella casella di testo "Nome" immettere un nome che identificherà in modo univoco la regola, ad esempio: "Aggiungi script di rilevamento".
Definizione di una precondizione
Una precondizione viene usata per valutare se la valutazione delle regole in uscita deve essere eseguita su una risposta. Ad esempio, se una regola che modifica il contenuto HTML, solo le risposte HTTP con intestazione content-type impostata su "text/html" devono essere valutate rispetto a questa regola. La valutazione delle regole in uscita e la riscrittura del contenuto è un'operazione che può influire negativamente sulle prestazioni di un'applicazione Web. Pertanto, usare le precondizioni per limitare i casi in cui vengono applicate le regole in uscita.
Poiché la regola che si sta creando deve essere applicata solo alle risposte HTML, si definirà una precondizione che verifica se il tipo di contenuto dell'intestazione della risposta HTTP è equial a "text/html".
Per definire una precondizione:
Nell'elenco Pre-condizioni selezionare "<Crea nuova condizione preliminare...>".
Verrà visualizzata la finestra di dialogo Editor precondizione, in cui sarà necessario definire la precondizione. Specificare le impostazioni di precondizione come indicato di seguito:
Nome: "IsHTML"
Uso di: "Espressioni regolari"
Fare clic su "Aggiungi" per visualizzare la finestra di dialogo "Aggiungi condizione". In questa finestra di dialogo specificare:
Input condizione: "{RESPONSE_CONTENT_TYPE}"
Controllare se la stringa di input: "Corrisponde al modello"
Modello: "^text/html"
Fare clic su OK per salvare la precondizione e tornare alla pagina "Modifica regola".
Definizione di un ambito corrispondente
La regola di riscrittura in uscita può operare sul contenuto di un'intestazione HTTP o sul contenuto del corpo della risposta. Questa regola deve modificare il contenuto della risposta, quindi nell'elenco a discesa "Ambito corrispondente" scegliere "Risposta".
Definizione di un modello
Nell'elenco a discesa "Using:" scegliere l'opzione "Corrispondenza esatta".
Nella casella di testo "Pattern" immettere la stringa seguente:
</body>
Definizione di un'azione
Scegliere il tipo di azione "Riscrivi" elencato nella casella di gruppo "Azione". Nella casella di testo "Valore" immettere la stringa seguente:
<script type='text/javascript'>//Your web analytics tracking code goes here...</script></body>
Questa stringa specifica il nuovo valore che verrà usato come sostituzione per la stringa corrispondente all'interno di una risposta. In questo caso specifico la stringa "</body>" verrà sostituita con il frammento di codice JavaScript seguito dal tag corpo HTML di chiusura.
Lasciare i valori predefiniti per tutte le altre impostazioni. La pagina delle proprietà "Modifica regola" dovrebbe essere simile alla pagina seguente:
Salvare la regola facendo clic sull'azione "Applica" sul lato destro.
Visualizzazione della regola di riscrittura nel file di configurazione
Le regole di riscrittura vengono archiviate nel file aplicationHost.config o nei file web.config. Per controllare la configurazione della regola appena creata, aprire un file web.config che si trova in %SystemDrive%\inetput\wwwroot\
. In questo file verrà visualizzata la <rewrite>
sezione contenente tutte le definizioni delle regole:
<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 della regola
Per verificare che la regola aggiunga correttamente un codice JavaScript alla pagina Web, richiedere questo URL http://localhost/iisstart.htm
.
Dopo aver ottenuto una risposta dal server, aprire il codice sorgente HTML effettivo (se si usa Internet Explorer 8, quindi passare a Pagina -> Visualizza origine). Il codice HTML della risposta conterrà il codice JavaScript prima del tag del corpo HTML di chiusura:
Riepilogo
In questa procedura dettagliata si è appreso come usare le regole in uscita nel modulo di riscrittura URL versione 2 per modificare il contenuto della risposta HTTP in tempo reale. Questa funzionalità è molto utile quando è necessario apportare modifiche minime alle risposte HTTP generate dalle applicazioni Web, ma non si ha il controllo dell'applicazione o non è pratico apportare modifiche su larga scala all'applicazione.