我有一些代码可以定期增加一个由AJAX发送的cookie值中的计数器。这适用于Chrome / FF / IE,但在Safari中,我在服务器上收到的cookie值大约是JS值+10。
/* 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文件。
答案 0 :(得分:1)
我无法找到相关文档。
Safari似乎已经改变了XHR请求的实现 - 尽管http规范似乎允许这样做。
大多数浏览器在发送AJAX时,会同步读取cookie值,然后异步发送请求。
然而,Safari甚至可以异步读取cookie值(即,只要它想要)。
以下是使用quirksmode.org中的createCookie演示的一些代码:
createCookie("TEST_COOKIE", "Before", 10);
var x = new XMLHttpRequest();
x.open("GET", location.href);
x.send();
createCookie("TEST_COOKIE", "After", 10);
在Chrome(等)中,服务器将在"之前接收"曲奇饼。在Safari(在Windows,Mac和iPad上测试),服务器将在之后收到!