使用跨域ajax时出现第三方cookie

时间:2012-03-24 09:15:25

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

我有一个jquery小部件,它从另一个域的服务器获取数据(使用JsonNp)。服务器从会话返回数据。 我的问题发生在Safari(其他浏览器工作)。当我向服务器发出请求时,它每次都返回新会话的数据。发生这种情况是因为会话ID存储在cookie中(但是safari不允许默认保存第三方跨域cookie)。

我尝试将会话状态从 Cookieless 更改为 AutoDetected ,但会话不适用于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();
});

2 个答案:

答案 0 :(得分:3)

嗯......因为Safary阻止了第三方跨域cookie ......没有办法解决......任何解决方案都将是安全策略的“突破”...这不太可能发生,那里只是有两种方法可以解决: 1)更改浏览器设置....但是这是用户可以执行的操作...而不是服务器,因此一旦检测到问题,可能会提醒用户更改安全设置。

2)3d party服务器将信息发送到主服务器,然后主服务器发出cookie。这样就避免了跨域。这两个服务器可以通过Web服务进行通信(效率不高......但有效)。

答案 1 :(得分:1)

稍微难以理解您的问题,但如果您需要从您的cookie发送数据 - 只需将其编码到您的请求(POST / GET)到其他服务器。你能否也传递会话ID?

或许还有一些代码可以展示你想要实现的目标?