Как не потерять события из-за CORS-preflight в server-side GTM
В server-side Google Tag Manager некоторые браузерные запросы сначала отправляют служебный OPTIONS-запрос — preflight. Если сервер на него не отвечает корректно, основной запрос до аналитики просто не доедет.
— Проверьте, какие запросы у вас уходят с клиента.
Особенно это касается нестандартных заголовков, POST-методов и междоменных отправок. Именно они чаще всего запускают preflight.
— Убедитесь, что сервер принимает OPTIONS.
Для этого endpoint должен уметь быстро и без ошибок отвечать на preflight, а не считать его «поломанным» запросом.
— Возвращайте правильные CORS-заголовки.
Нужны валидные `Access-Control-Allow-Origin`, `Access-Control-Allow-Methods` и при необходимости `Access-Control-Allow-Headers`. Иначе браузер блокирует последующий запрос.
— Сверьте разрешённые методы с реальным трафиком.
Если на клиенте летит `POST`, а сервер разрешает только `GET`, событие не пройдёт. Это частая причина «тихих» потерь в трекинге.
— Отдельно протестируйте запросы с кастомными заголовками.
Именно они чаще всего требуют preflight и ломаются после внедрения server-side, если настройка копировалась «по умолчанию».
— Проверьте логи server-side контейнера.
Там видно, приходит ли OPTIONS, как на него отвечает сервер и на каком этапе отваливается цепочка доставки.
Когда это пригодится: при миграции на server-side analytics, отладке потерь событий после настройки CORS и перед запуском новых источников трафика.
— @ServerSideTrackingRuPro
Server-side tracking
@ServerSideTrackingRuPro
Как не потерять события из-за CORS-preflight в server-side GTM
Этот пост опубликован в Telegram-канале Server-side tracking. Подписаться можно по ссылке: @ServerSideTrackingRuPro.