Настройка сервера для работы с Safari
Для улучшения сбора данных и таргетинга рекламы в браузере Safari необходимо настроить обновление cookie _ym_uid на сервере. Этот тип cookie помогает идентифицировать посетителей сайта.
Логика обновления cookie
Если в заголовке запроса Cookie присутствует _ym_uid, сервер должен отправить Set-Cookie с тем же значением _ym_uid и установить срок его действия на 1 год. Также нужно отправить cookie _ym_d со значением текущего времени в формате Unix-time.
Пример реализации на сервере nginx
Сначала отредактируйте файл конфигурации nginx.
Примечание. Путь к файлам конфигурации может отличаться в зависимости от настроек вашего сервера.
sudo nano /etc/nginx/sites-enabled/default
В начало файла, до блоков server, добавьте код для вычисления unixtime:
# Вычисление unixtime
map $msec $sec {
"~*(?<_sec>[0-9]+)\." "$_sec";
}
В каждом блоке server добавьте следующий код (его можно разместить в любом месте блока):
Примечание. Если ваш сервис не использует протокол HTTPS, удалите из заголовка параметр Secure;.
# Обновление куки Яндекс.Метрики
if ($cookie__ym_uid) {
set $reset_uid_cookie "_ym_uid=${cookie__ym_uid};Max-Age=31536000;Secure;Path=/;Domain=$host";
set $reset_d_cookie "_ym_d=${sec};Max-Age=31536000;Secure;Path=/;Domain=$host";
}
add_header Set-Cookie $reset_uid_cookie;
add_header Set-Cookie $reset_d_cookie;
Проверьте корректность конфигурации:
sudo nginx -t
После проверки обновите конфигурацию nginx:
sudo service nginx reload
Внимание. Параметр
add_header
в примере находится в блоке server
. Если add_header
будет помещен в блок location
, то он отменит другие директивы add_header.Чтобы проверить, правильно ли настроен сервер:
- В браузере Safari откройте ваш сайт.
- В режиме разработки убедитесь, что среди cookies есть запись _ym_uid, которая истекает через 1 год.