Настраивал Google Tag Manager(GTM), создал переменную тип «Основной файл Cookie».
Предварительно на сайте создал отдельную куку EXMAPLE_COOKIE.
$cookie = new Bitrix\Main\Web\Cookie("EXMAPLE_COOKIE", 'Y', time() + 3600);
$cookie->setDomain($context->getServer()->getHttpHost());
Заполнил все, как сказано в инструкции Google. Но при отладке, переменная в GTM, в которой должно было приходить значение из cookie сайта EXMAPLE_COOKIE, была со значением undefined — т.е. GTM не мог получить значение куки.
Причина проблемы оказалась в том, что httponly параметр куки установился в true. Как следствие javascript GTM не мог извлечь значение.
Почему значение параметра httponly установилось в true, ведь я не указывал значение этого параметра и по умолчанию ожидалось поведение функции php setcookie и значение false.
Произошло это потому что в конструкторе Bitrix\Main\Web\Cookie происходит проверка файла settings.php на секцию с cookies, пример секции cookies:
'cookies' =>
array (
'value' => array (
'secure' => false,
'http_only' => true,
),
'readonly' => false,
),
Если её нет, либо нет значения http_only, то по умолчанию задается true. Кстати то же самое для параметра secure, но если его нет в секции cookies, то false.
У меня в файле не было секции и я получил true.
Решение проблемы — это добавить:
$cookie->setHttpOnly(false);

Очень интересная статья