我刚刚注意到一个只影响 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。