Настройка сервера для работы с 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.
Чтобы проверить, правильно ли настроен сервер:
  1. В браузере Safari откройте ваш сайт.
  2. В режиме разработки убедитесь, что среди cookies есть запись _ym_uid, которая истекает через 1 год.

Обратите внимание: служба поддержки не обзванивает пользователей. Не следуйте указаниям людей, которые вам звонят и представляются службой поддержки Яндекс Метрики.