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

Причина проблемы оказалась в том, что httponly параметр куки установился в true. Как следствие javascript GTM не мог извлечь значение.
битрикс cookie httponly

Почему значение параметра 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);
ПоделитьсяShare on Facebook0Share on VKShare on Google+0Tweet about this on TwitterShare on LinkedIn0Pin on Pinterest0

Добавить комментарий