我有一个 jquery 小部件,可以从另一个域中的服务器获取数据(使用 JsonNp)。服务器从 session 返回数据。 我的问题发生在 Safari 中(其他浏览器也可以)。当我向服务器发出请求时,它每次都会返回新 session 的数据。发生这种情况是因为 session ID 存储在 cookie 中(但 safari 默认情况下不允许保存第 3 方跨域 cookie)。
我尝试将 session 状态从Cookieless更改为自动检测,但该 session 不适用于 Safari。
我还尝试了以下技巧,但由于某些原因它对我不起作用:
$(function(){
$('body').append('<iframe id="cookiesHackFrame" name="cookiesHackFrame" src="http://mysite.com/" style="display:none;"></iframe>');
$('body').append('<form id="cookiesHackForm" action="http://mysite.com/" method="post" target="cookiesHackFrame" >');
$('#cookiesHackForm').submit();
});
最佳答案
嗯...由于 Safary 阻止了第 3 方跨域 cookie...没有办法解决...任何解决方案都会“破坏”安全策略...这不太可能发生,有无非就是两种解决方法: 1)更改浏览器设置...但是这是用户可以做的事情...而不是服务器,因此一旦检测到问题,可能会提醒用户更改安全设置。
2) 3d方服务器将要放入cookie中的信息发送到主服务器,然后主服务器发出cookie。这样就避免了跨域。两个服务器可以通过 Web 服务进行通信(效率不是很高……但可以)。
关于jquery - 使用跨域ajax时的第3方cookie问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9850499/