IE11停止接受跨域Cookie策略

时间:2015-11-06 20:58:57

标签: javascript php cookies internet-explorer-11 cookie-policy

我刚注意到一个奇怪的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.现在,在tracking.com服务器上查看output.txt。你会发现它是空的。这就是问题 - 它无法读取cookie。 有一个Cookie政策限制,即使我已经发送了正确的“忽略所有,我的朋友”Cookie标题。

现在,使用Chrome和Firefox重复此过程 - 没有问题。

好吧,那么,如果你回去并将像素从Javascript切换到纯HTML来调用那个像素,它也不会那样工作。但是如果你在浏览器的URL中手动调用像素,它可以在IE中正常工作。我们的跟踪过去常常起作用,所以我认为这个问题恰好发生在IE11上。

但这是我的难题 - 我正在与第三方合作,他们正在通过像素脚本URL末尾的查询参数将一些额外的东西传递给我的像素脚本,例如订单总数和订单交易ID,以及这些仅适用于我的脚本通过Javascript。这就是为什么我不能使用HTML技术来加载那个像素脚本 - 但是必须在运行时使用jQuery(或Javascript)注入它以获得订单总数和订单交易ID。

1 个答案:

答案 0 :(得分:0)

答案很简单 - 从IE11开始,这在IE中不再有效。一个人必须通过他们的购物车以不同的方式传递参数,以便收据/ thankyou页面正确地发布这些参数,而无需在接收像素脚本上读取cookie。

Microsoft在其网站上发布了有关此内容的信息:

https://msdn.microsoft.com/en-us/library/mt146424(v=vs.85).aspx

  

&#34;建议的做法是避免在上部署P3P隐私政策   您的网站。&#34;

因此,如果您在带有P3P标头的脚本中使用假GIF来访问先前在跟踪域上设置的Cookie,那么它现在已经在IE11中被破坏了,Microsoft并不关心发布原因或提供另一种解决方案。有许多依赖于此的网络广告跟踪平台,微软刚刚打破它们。