2015-11-06 101 views
2

我剛剛注意到一個奇怪的cookie政策問題,隻影響IE瀏覽器。我只能在IE11上測試。也許你知道一個解決方法?IE11停止接受跨域Cookie政策

第1步。這需要2個域。我們會將它們稱爲cart.com和tracking.com。

第2步:使用IE11瀏覽到https://tracking.com/index.php,它應該包含這樣的: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://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來調用該像素,它也不會以這種方式工作。但是,如果您在瀏覽器的網址中手動調用像素,則它在IE中可以正常工作。我們的跟蹤曾經工作過,所以我相信這個問題剛剛發生在IE11上。

但是,這是我的難題 - 我正在與第三方合作,他們通過像素腳本URL末尾的查詢參數向像素腳本傳遞一些額外的東西,如訂單總數和訂單交易ID,而這些只能通過Javascript使用我的腳本。這就是爲什麼我無法使用HTML技術來加載該像素腳本 - 但必須在運行時使用jQuery(或Javascript)注入它以獲取訂單總數和訂單事務ID。

回答

0

答案很簡單 - 這不再適用於IE,從IE11開始。人們必須通過購物車以不同的方式傳遞參數,以便收據/謝謝頁面正確地發回這些參數,而無需在接收像素腳本上讀取Cookie。

微軟發佈這方面的信息在他們的網站:

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

「推薦的做法是避免 您的站點部署P3P隱私政策。」

所以,如果你在腳本中使用一個假的GIF與P3P頭訪問一個cookie的跟蹤域預先設定的 - 它現在打破了IE11和微軟並不關心張貼爲什麼或提供另一個解在那裏有很多依賴於此的網絡廣告跟蹤平臺,而微軟只是把它們打破了。