IE11 прекратил принимать междоменные политики cookie
Я только что заметил странную проблему политики cookie, которая затрагивает только IE. Я мог только проверить на IE11. Возможно, вы знаете обходной путь?
Шаг 1. Для этого требуется 2 домена. Мы назовем их cart.com и tracking.com.
Шаг 2. Используя IE11, перейдите по https://tracking.com/index.php, и он должен содержать это:
<?php
setcookie('track_test', 'mytest', time()+60*60*24*365, '/', '.tracking.com');
?>
<p>COOKIE SET</p>
<p><a href="https://cart.com/purchase.php">Buy Now</a></p>
Шаг 3. Нажмите "Купить сейчас" на https://tracking.com/index.php и он должен перейти на https://cart.com/purchase.php, который должен содержать это:
// ABOVE THIS LOOKS LIKE AN ORDINARY HTML5 PAGE THAT LOADS jQuery.
<script type="text/javascript">
$(document).ready(function(){
$('BODY').append('<img alt="" width="1" height="1" src="https://tracking.com/pixel.php" />');
});
</script>
Шаг 4. Итак, при просмотре purchase.php должен запуститься https://tracking.com/pixel.php, который выглядит так:
<?php
file_put_contents('output.txt',var_export($_COOKIE,TRUE),FILE_APPEND);
// RETURN FAKE IMAGE RESULT
header('Content-type: image/gif');
header('p3p:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
die(base64_decode('R0lGODlhAQABAJAAAP8AAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw=='));
Шаг 5. Теперь просмотрите ваш output.txt на сервере tracking.com. Вы найдете это пустым. В этом проблема - он не может читать куки. Существует ограничение политики использования файлов cookie, хотя я отправил правильный заголовок файла cookie "игнорируй все это, мой друг".
Теперь повторите процесс с Chrome и Firefox - никаких проблем.
Итак, если вы вернетесь назад и переключите пиксель с Javascript на чисто HTML, чтобы вызвать этот пиксель, это тоже не сработает. Но если вы вызываете пиксель вручную в URL вашего браузера, он прекрасно работает в IE. Раньше наше отслеживание работало, поэтому я считаю, что эта проблема возникла только в IE11.
Но вот моя загадка - я работаю со сторонними разработчиками, и они передают некоторые дополнительные вещи в мой пиксельный скрипт, такие как сумма заказа и идентификатор транзакции заказа, через параметры запроса в конце URL-адреса пиксельного скрипта, и это только доступны для моего скрипта через Javascript. Вот почему я не могу использовать технику HTML для загрузки этого пиксельного скрипта - но я должен внедрить его во время выполнения, используя jQuery (или Javascript), чтобы получить итоговую сумму заказа и идентификатор транзакции заказа.
1 ответ
Ответ прост - это больше не работает в IE, начиная с IE11. Нужно будет передать параметры другим способом через их корзину для покупок, чтобы страница квитанции / спасибо правильно отправила эти параметры обратно без файлов cookie для чтения в скрипте принимающего пикселя.
Microsoft разместила информацию об этом на своем веб-сайте:
https://msdn.microsoft.com/en-us/library/mt146424(v=vs.85).aspx
"Рекомендуется избегать развертывания политик конфиденциальности P3P на вашем сайте".
Таким образом, если вы используете поддельный GIF в сценарии с заголовком P3P для доступа к cookie, установленному ранее в домене отслеживания, - теперь он не работает в IE11, и Microsoft не хочет сообщать о причине или предлагать другое решение. Есть много платформ для отслеживания рекламы в Интернете, которые полагаются на это, и Microsoft просто сломала их.