Использование правил для исходящего трафика для добавления кода отслеживания веб-аналитики
Этот раздел документации относится к модулю переопределения URL-адресов версии 2.0 для IIS 7.
В этом пошаговом руководстве описано, как создать правило для исходящего перезаписи IIS, которое вставляет скрипт отслеживания веб-аналитики на веб-страницы.
Необходимые компоненты
Чтобы выполнить это пошаговое руководство, необходимо иметь следующее:
- Установлен модуль перезаписи URL-адресов 2.0 RCrelease.
Введение
Цель службы веб-аналитики — предоставить издателям веб-сайта статистические сведения о посетителях своих сайтов. Эта информация помогает издателям сайтов оптимизировать контент, объявления и предложения услуг, чтобы повысить удовлетворенность клиентов и roI. Как правило, веб-аналитики, такие как Google Analytics или Omniture, работают, собирая данные о посетителей веб-сайта. Когда владельцы сайтов запрашивают отчеты, поставщик веб-аналитики обрабатывает эти данные и предоставляет его владельцам сайтов в удобном, простом формате. Чтобы включить сбор данных, необходимый для аналитики, владельцы веб-сайта должны инструментировать все страницы на веб-сайте с помощью скрипта отслеживания, выданного поставщиком услуг веб-аналитики.
В некоторых случаях добавление кода отслеживания на веб-страницы является простой задачей. Однако во многих случаях может потребоваться вручную добавить скрипт на многочисленные веб-страницы. В таких случаях инструментирование веб-аналитики становится дорогостоящим и трудоемким. Возможность перезаписи ответов в модуле перезаписи URL-адресов версии 2 может помочь в этих ситуациях, выполнив правила исходящего трафика, которые изменяют содержимое ответа на лету.
Создание правила перезаписи исходящего трафика
Для начала вы создадите правило перезаписи исходящего трафика, которое добавляет фрагмент кода JavaScript в HTML-ответ. Фрагмент кода вставляется непосредственно перед закрывающим <тегом /body> , как показано на следующем рисунке.
...
<script type='text/javascript'>
//Your web analytics tracking code goes here...
</script>
</body>
ПРЕДУПРЕЖДЕНИЕ: В этом примере предполагается, что код JavaScript является из доверенного источника, и его следует вставить на HTML-страницу как есть. Во многих других случаях при изменении заголовков ответа или содержимого ответа правилом перезаписи исходящего трафика следует соблюдать дополнительную осторожность, чтобы убедиться, что текст, вставленный в ответ, не содержит исполняемый код на стороне клиента, что может привести к уязвимостям в межсайтовых сценариях. Это особенно важно, если правило перезаписи использует ненадежные данные, такие как заголовки HTTP или строка запроса, для создания строки, которая будет вставлена в ответ HTTP. В таких случаях строка замены должна быть закодирована с помощью функции HtmlEncode , например:
<action type="Rewrite" value="{HtmlEncode:{HTTP_REFERER}}" />
Чтобы создать правило исходящего трафика, выполните следующие действия.
- Открытие диспетчера IIS
- Выберите "Веб-сайт по умолчанию"
- В представлении компонентов выберите "Модуль переопределения URL-адресов"
- В области действий справа щелкните "Добавить правила...". В диалоговом окне "Добавить правила" выберите "Пустое правило" в категории "Правила исходящего трафика" и нажмите кнопку "ОК".
Теперь необходимо определить фактическое правило исходящего трафика. В модуле переопределения URL-адресов 2.0 правило перезаписи исходящего трафика определяется путем указания следующих сведений:
- Имя правила.
- Необязательное условие, определяющее, следует ли применять это правило к ответу.
- Шаблон, используемый для сопоставления строки в ответе.
- Необязательный набор условий.
- Действие, выполняемое при сопоставлении шаблона, и все проверки условий выполнены успешно.
Именование правила
В текстовом поле "Имя" введите имя, уникально определяющее правило, например "Добавить скрипт отслеживания".
Определение предусловия
Предварительные условия используются для оценки того, следует ли выполнять оценку правил исходящего трафика в ответе. Например, если правило, изменяющее HTML-содержимое, следует оценить только HTTP-ответы с заголовком типа контента, равным text/html. Оценка исходящих правил и перезапись содержимого — это активная операция ЦП, которая может негативно повлиять на производительность веб-приложения. Таким образом, используйте предварительные условия, чтобы сузить ситуации, когда применяются правила исходящего трафика.
Так как создаваемое правило должно применяться только к html-ответам, вы определите условие, которое проверяет, является ли тип контента заголовка HTTP-ответа эквивалентным "text/html".
Чтобы определить условие, выполните следующее:
В списке предварительных условий выберите "<Создать новое условие...>".
Откроется диалоговое окно редактора предварительных условий, в котором необходимо определить условие. Укажите параметры предварительных условий следующим образом:
Имя: IsHTML
Использование: "Регулярные выражения"
Нажмите кнопку "Добавить", чтобы открыть диалоговое окно "Добавить условие". В этом диалоговом окне укажите следующее:
Входные данные условия: "{RESPONSE_CONTENT_TYPE}"
Проверьте, соответствует ли входная строка: "Соответствует шаблону"
Шаблон: "^text/html"
Нажмите кнопку "ОК", чтобы сохранить предварительные условия и вернуться на страницу "Изменить правило".
Определение соответствующей области
Правило перезаписи исходящего трафика может работать с содержимым заголовка HTTP или содержимого текста ответа. Это правило должно изменить содержимое ответа, поэтому в раскрывающемся списке "Область сопоставления" выберите "Ответ".
Определение шаблона
В раскрывающемся списке "Использование:" выберите параметр "Точное соответствие".
В текстовом поле "Шаблон" введите следующую строку:
</body>
Определение действия
Выберите тип действия "Перезаписать", указанный в поле "Действие". В текстовом поле "Значение" введите следующую строку:
<script type='text/javascript'>//Your web analytics tracking code goes here...</script></body>
Эта строка указывает новое значение, которое будет использоваться в качестве замены соответствующей строки в ответе. В этом случае строка "</body>" будет заменена фрагментом кода JavaScript, за которым следует закрывающий тег текста HTML.
Оставьте значения по умолчанию для всех остальных параметров. Страница свойств "Изменить правило" должна выглядеть следующим образом:
Сохраните правило, нажав кнопку "Применить" в правой части.
Просмотр правила перезаписи в файле конфигурации
Правила переопределения хранятся в файле aplicationHost.config или в файлах web.config. Чтобы проверить конфигурацию только что созданного правила, откройте файл web.config, расположенный в %SystemDrive%\inetput\wwwroot\
. В этом файле вы увидите <rewrite>
раздел, содержащий все определения правил:
<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>
Тестирование правила
Чтобы проверить правильное добавление кода JavaScript на веб-страницу, запросите этот URL-адрес http://localhost/iisstart.htm
.
После получения ответа с сервера откройте фактический исходный код HTML (если используется Internet Explorer 8, перейдите на страницу —> просмотр источника). HTML-код ответа будет содержать код JavaScript перед закрывающим тегом текста HTML:
Итоги
В этом пошаговом руководстве вы узнали, как использовать правила для исходящего трафика в модуле переопределения URL-адресов версии 2, чтобы изменить содержимое ответа HTTP на лету. Эта возможность очень полезна, если требуется внести незначительные изменения в http-ответы, созданные веб-приложениями, но у вас нет контроля над приложением или нет практического применения крупномасштабных изменений в приложении.