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 просто сломала их.

Другие вопросы по тегам