jquery - 使用跨域ajax时的第3方cookie问题

标签 jquery asp.net-mvc-3 session-cookies

我有一个 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/

相关文章:

javascript - 对于不区分大小写的 jQuery :contains selector?,有什么方法可以加快此解决方案的速度

asp.net-mvc-3 - MVC3/Razor 添加 Controller "Get-PrimaryKey"无法找到主键

asp.net - 在 ASP MVC3 中,如何使用 uri 执行 Controller 和 Action ?

python - Django : When is sessionid cookie set ? [默认可用吗? ]

javascript - 在控制台中读取 PHP session ID

jquery - iphone 样式复选框

javascript - 如何立即改变选取框onclick的方向

javascript - 'length' 为空或不是对象?浏览器 8

c# - 如何在 asp.net mvc3 中为特定的 Controller 和 Action 创建 url 路由

PHP 无法识别现有 session ,启动新 session