Проблема с cookie в js

Настраивал 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 не мог получить значение куки.

битрикс cookie httponly

Причина проблемы оказалась в том, что 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);

Рекомендуем к прочтению



1 Комментарий

Оставить комментарий

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания применять.

Срок проверки reCAPTCHA истек. Перезагрузите страницу.