Связывание cross-origin XHR-действий пользователей и их распределенных трассировок
Связывание cross-origin XHR-действий пользователей и их распределенных трассировок - Практическое руководство
Если у вас возникают проблемы со связыванием действий пользователей с соответствующими трассировками, обратитесь к разделу Устранение неполадок корреляции RUM для веб-приложений. Ключ-АСТРОМ связывает действия пользователей и их соответствующие распределенные трассировки для обеспечения непрерывной сквозной видимости. Например, это позволяет определить топ-3 источников веб-запросов на странице деталей действия пользователя или перейти от каскадной диаграммы к распределенным трассировкам. Связывание действий пользователей и их распределенных трассировок работает «из коробки» при соблюдении следующих условий:
- Веб-запрос является same-origin запросом: целевой URL веб-запроса и страница, на которой был выполнен запрос, имеют одинаковые протокол, хост и порт. В этом случае браузеры включают RUM cookies в веб-запрос, которые необходимы для корреляции действия пользователя с распределенной трассировкой.
- Технология, используемая на первом инструментированном уровне (уровень, ближайший к браузеру), указана в разделе Поддержка технологий - Real User Monitoring - Веб-серверы и приложения. Для этих технологий ЕдиныйАгент добавляет и оценивает RUM cookies. Ключ-АСТРОМ не может автоматически связывать cross-origin XHR-действия и соответствующие им распределенные трассировки. Чтобы включить такую корреляцию, следуйте одному из подходов.
Включение cookies в cross-origin XHR-вызовы
По умолчанию браузеры не включают cookies в cross-origin запросы из-за same-origin policy, которая ограничивает взаимодействие вашей страницы с ресурсами из другого источника. Вы можете использовать CORS requests with credentials для добавления RUM cookies и, таким образом, связывания cross-origin XHR и их распределенных трассировок. Для этого подхода должны быть выполнены следующие предварительные условия:
- Технология, используемая на первом инструментированном уровне, указана в разделе Поддержка технологий - Real User Monitoring - Веб-серверы и приложения.
- Два вовлеченных домена имеют как минимум общий effective top-level domain plus one (eTLD+1), чтобы можно было указать общий cookie domain.
Чтобы включить cookies в cross-origin XHR-вызовы:
- В вашем JavaScript-коде установите свойство
withCredentialsобъектаXMLHttpRequestвtrue. Если вы используете Fetch, установите свойствоcredentialsвinclude. - Настройте сервер, обрабатывающий веб-запрос, так, чтобы он отвечал заголовком
Access-Control-Allow-Credentials: trueи заголовкомAccess-Control-Allow-Origin, содержащим конкретный источник (то есть не*). - Если вы настраиваете домен cookie вручную, убедитесь, что он охватывает оба вовлеченных домена. Если используется автоматическое определение домена cookie (по умолчанию), то определяемый домен cookie уже удовлетворяет этому требованию.
Когда cross-origin XHR-действие использует HTTP-метод, заголовок запроса или тип содержимого, требующий от браузера отправки preflight request, Ключ-АСТРОМ не может связать этот preflight, поскольку preflight-запросы не содержат cookies.
Использование заголовка `x-dtc`
Чтобы следовать описанному выше подходу на основе cookies, вовлеченные домены должны позволять указывать общий домен cookie. Подход на основе заголовков не имеет этого ограничения. Этот подход поддерживается для технологий, перечисленных в разделе Поддержка технологий - Real User Monitoring - Веб-серверы и приложения. Заголовок x-dtc — это пользовательский HTTP-заголовок, добавляемый RUM JavaScript и содержащий информацию, которая в противном случае передается с помощью RUM cookies. Его добавление необходимо явно включить, поскольку конечные точки, обрабатывающие cross-origin запросы, должны быть настроены на прием этого заголовка. Не включайте добавление заголовка x-dtc, если вы не принимаете следующие условия:
- Добавление заголовка
x-dtcдля связывания cross-origin XHR-действий пользователей и их распределенных трассировок является необязательным. - Вы понимаете шаги, необходимые для подготовки ваших конечных точек.
- Если вы не настроите конечные точки правильно перед включением добавления заголовка, ваше веб-приложение может выйти из строя.
- Вы полностью признаете, что Ключ-АСТРОМ не несет ответственности за любые неисправности приложения, вызванные неправильной конфигурацией.
- Всегда сначала включайте добавление заголовка
x-dtcв тестовой среде.
Чтобы связать cross-origin XHR-действия пользователей и их распределенные трассировки с помощью заголовка x-dtc, настройте конечные точки на прием x-dtc, а затем добавьте регулярное выражение, соответствующее XHR-вызовам.
- Настройте конечные точки, обрабатывающие cross-origin запросы, на прием заголовка
x-dtc. Конечные точки должны обрабатывать preflight requests, которые браузер отправляет из-за добавления заголовка. В частности, ответы на preflight-запросы должны содержать заголовокAccess-Control-Allow-Headers: x-dtc. В противном случае XHR завершится ошибкой CORS. - В Ключ-АСТРОМ перейдите в раздел Веб.
- Выберите приложение, которое хотите настроить.
- В правом верхнем углу страницы обзора приложения выберите Дополнительно (…) > Редактировать.
- В настройках приложения выберите Захват > Расширенная настройка.
- В разделе Включить Real User Monitoring для cross-origin XHR-вызовов укажите регулярное выражение, соответствующее XHR-вызовам.
Если заголовок x-dtc не добавляется к запросу после выполнения вышеуказанных инструкций, проверьте регулярное выражение и убедитесь, что RUM настроен на захват XHR-действий. Может быть связан только фактический запрос, но не preflight-запрос.