Проблемы с Записями Сессий
Записи появляются в панели управления через несколько минут (~4 мин) после завершения сессии. Сессия считается завершённой, когда пользователь закрывает вкладку или браузер, отключается (более чем на 2 мин) или превышает 2 часа (в этом случае начинается новая сессия). Каждая вкладка создаёт новую запись, тогда как перезагрузка существующей вкладки не запускает новую.
Этот раздел призван помочь вам устранить распространённые проблемы с повторами сессий.
Повторы не отображаются в списке
Section titled Повторы не отображаются в спискеПрежде чем приступить к отладке записей сессий, убедитесь, что вы захватываете весь трафик. Нажмите кнопку Manage в разделе Sessions и включите Capture All.
Ещё одна распространённая ошибка заключается в двойном запуске трекера, что препятствует записи сессий. Обычно это происходит, когда разработчики переходят от настройки на основе скрипта к использованию npm-пакета, поэтому убедитесь, что у вас есть только один из вариантов.
Проверьте установку
Section titled Проверьте установкуЕсли вы не уверены в настройке, откройте инспектор браузера и проверьте вкладку Network, чтобы увидеть, есть ли XHR-запросы (ищите “ingest”), отправляемые на ваш IP/домен (или *.openreplay.com, если вы используете OpenReplay Cloud).
Другой способ — обновить конструктор трекера и выводить сообщение при запуске.
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
onStart: ({ sessionID }) => console.log("OpenReplay tracker started with session: ", sessionID),
});
Тестирование на localhost
Section titled Тестирование на localhostOpenReplay требуется публичный доступ для копирования некоторых ресурсов вашего приложения (CSS, шрифтов и иконок) для корректного отображения записей. Ваш сайт также должен использовать SSL/HTTPS, иначе трекер не запустится. По этим причинам сессии не будут захватываться на localhost, если только вы не примените этот обходной путь.
Сайт не использует HTTPS
Section titled Сайт не использует HTTPSВ целях безопасности трекер работает только в веб-приложениях, использующих SSL (HTTPS). Если ваш сайт работает по HTTP, трекер не запустится.
Отсутствует CSP
Section titled Отсутствует CSPЕсли вы видите ошибку, подобную приведённой ниже, значит, OpenReplay не смог запуститься из-за отсутствующей политики безопасности контента. См. здесь политику, которую нужно добавить.

OpenReplay заблокирован
Section titled OpenReplay заблокированСкрипт записи может быть заблокирован расширением браузера, например блокировщиком рекламы. Используйте инспектор браузера, чтобы проверить, не завершаются ли запросы ошибкой. Если так, добавьте исключение для домена, на котором установлен бэкенд OpenReplay (или openreplay.com, если вы используете облачное предложение).
Из-за неподдерживаемого браузера
Section titled Из-за неподдерживаемого браузераOpenReplay выбрасывает исключение, когда он запускается в неподдерживаемом браузере. См. здесь список поддерживаемых браузеров.
Повторы отображаются некорректно
Section titled Повторы отображаются некорректноОтсутствуют стили
Section titled Отсутствуют стилиOpenReplay нужен доступ к ресурсам, таким как ваш css, чтобы повторы работали. Фактически, эти файлы копируются, а затем кэшируются нашим бэкендом, так что вы можете просматривать старые записи, даже если ваше веб-приложение изменилось. Именно поэтому вы должны убедиться, что ваши стили (а также иконки и шрифты) общедоступны. Если ваши ресурсы размещены на домене с ограниченным доступом (приватном или защищённом), то OpenReplay не сможет скопировать и использовать их в повторах. Вы можете скопировать их на общедоступный домен, а затем использовать опцию resourceBaseHref, чтобы указать домен в конструкторе трекера.
Если ваши iFrame с одинаковым источником содержат вложенные фреймы, убедитесь, что используете абсолютные пути (в элементах <link>, указывающих на ваши CSS-файлы) в каждом встроенном фрейме, или используйте опцию resourceBaseHref, чтобы указать домен в конструкторе трекера.
В случае тестирования на localhost стили не будут отображаться, поскольку OpenReplay не может получить к ним доступ, так как они находятся на вашем компьютере. Следуйте этому руководству, чтобы исправить ситуацию.
Белый экран
Section titled Белый экранВ редких случаях повтор может отображаться пустым (или белым). Хотя страницы не будут отрисовываться, вы по-прежнему можете видеть движение мыши пользователя. Попробуйте установить опцию disableStringDict в значение true и проверьте, помогает ли это с новыми записями. Обычно это решает проблему.
Чёрный экран
Section titled Чёрный экранЕсли вы используете canvas поверх слоя вашего фронтенда (с более высоким zIndex), вы можете заметить чёрный экран во время повтора записанных сессий. Это происходит потому, что веб-API пока не позволяет нам захватывать альфа-канал. Если это относится к вашему веб-приложению, добавьте HTML-атрибут data-openreplay-hidden к проблемному элементу canvas, чтобы полностью скрыть его из записи сессии.
Изображения не отображаются
Section titled Изображения не отображаютсяВ отличие от стилей, изображения не кэшируются OpenReplay, а извлекаются во время повтора сессии. Поэтому они должны быть общедоступными. Если они находятся на CDN, убедитесь, что вы сохраняете старые версии своих изображений, чтобы можно было корректно воспроизводить старые записи сессий.
Iframe
Section titled IframeЕсли ваше веб-приложение включает iframe, вы не сможете воспроизводить их содержимое в составе ваших записей. Вы по-прежнему можете запустить OpenReplay внутри iframe, добавив tracker.start(), но он будет считаться отдельной вкладкой, что означает, что он будет захвачен в отдельную запись.
Повторы нарушены при переходе между поддоменами
Section titled Повторы нарушены при переходе между поддоменамиСайты, распределённые по множеству поддоменов, будут генерировать несколько сессий для одного посещения. Вы можете сшить их в единую запись, передав sessionHash в метод start() трекера. sessionHash можно сохранить, а затем извлечь из вашего междоменного хранилища (например, из cookie).
// Initialize the tracker as you would normally do
const tracker = new OpenReplay({
projectKey: PROJECT_KEY
})
...
// Make sure the tracker is stopped when passing subdomains and collect the sessionHash
const sessionHash = tracker.stop(); // This can be saved in cookies or passed through URL (if needed)
...
// Initialize another tracker on the new subdomain with the same projectKey
const trackerNewDomain = new OpenReplay({
projectKey: PROJECT_KEY
})
// Pass the sessionHash to the newly started session
trackerNewDomain.start({
sessionHash, // This can be retrieved from cookies or URL (if needed)
})
В случае, если продолжить сессию невозможно (она не существует или завершена), трекер автоматически запустит новую.
Повторы неполные
Section titled Повторы неполныеЭто можно заметить в повторах, в которых посещена только одна страница и которые завершаются, как только пользователь переходит на другую страницу. Обычно это происходит на веб-сайтах, которые не являются одностраничными приложениями (SPA). Чтобы это исправить, tracker.start() должен вызываться на каждой странице.
Повторы отсутствуют
Section titled Повторы отсутствуютЕсли вы не размещаете OpenReplay самостоятельно, а используете наше размещённое решение, есть вероятность, что некоторые сессии не записываются, поскольку запросы к нашим серверам могут блокироваться. Обычно это вызвано блокировщиками рекламы, VPN или расширениями браузера.
Есть вопросы?
Section titled Есть вопросы?Если у вас есть какие-либо вопросы об этом процессе, не стесняйтесь обращаться к нам в нашем Slack или загляните на наш Форум.