2

我刚刚注意到一个只影响 IE 的奇怪 cookie 策略问题。我只能在 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。

4

1 回答 1

0

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

微软在其网站上发布了相关信息:

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

“推荐的做法是避免在 您的网站上部署 P3P 隐私政策。”

因此,如果您在带有 P3P 标头的脚本中使用伪造的 GIF 来访问之前在跟踪域上设置的 cookie——它现在在 IE11 中被破坏了,Microsoft 不关心发布原因或提供其他解决方案。有许多网络广告跟踪平台依赖于此,而微软刚刚破坏了它们。

于 2015-11-06T22:35:10.887 回答