2015-04-26 21 views
0

我有一個代碼,它定期增加一個cookie值中的計數器,由AJAX發送。這個工程在Chrome/FF/IE,但在Safari瀏覽器,我收到了服務器上的cookie值大約是JS值+ 10爲什麼Safari發送錯誤的cookie值?

/* Example uses jQuery */ 
var counter = 0; 
function handleInteraction(){ 
    counter++; 
    createCookie("COUNTER", counter, 10); 
} 

$('body').on('mousemove', function() { 
    handleInteraction(); 
}); 

$('body').on('click', function() { 
    console.log(counter); 
    $.get("http://bryan.co.il/del.php"); 
    handleInteraction(); 
}); 

這是爲什麼?

如果您有它,請提供來自Safari的文檔。

回答

1

我找不到相關的文檔。

Safari似乎已經改變了XHR請求的實現 - 儘管這似乎是http規範允許的。

大多數瀏覽器在發送AJAX時,會同步讀取cookie值,然後異步發送請求。

Safari然而,甚至讀取cookie值異步(即任何時候它想要的)。

下面是一些代碼使用的createCookie從quirksmode.org證明:

createCookie("TEST_COOKIE", "Before", 10); 
var x = new XMLHttpRequest(); 
x.open("GET", location.href); 
x.send(); 
createCookie("TEST_COOKIE", "After", 10); 

在鉻(等),則服務器將收到 「之前」 的cookie。在Safari中(在Windows上測試,Mac & iPad),服務器將在收到!

相關問題