2010-11-19 46 views
2

我遇到了浏览器发送的JSONP和Cookie问题。Cookies和JSONP

其实我有两个网站:server1和server2。我希望我的用户对server1进行身份验证,当他们访问server2时,我想检查它们是否通过身份验证(通过对JSONP的Javascript JSONP调用)。

server1上的身份验证由cookie管理,我认为当通过JSONP对server1进行调用时,浏览器会发送cookie,然后身份验证就会生效。但似乎浏览器(FF)在通过JSONP发送请求时不会将cookie发送到server1。

有谁知道浏览器在使用JSONP请求时是否发送cookie?如果不是这种情况,如果用户通过server2在server1上进行身份验证,那么检查Javascript的更好的解决方案是什么?

谢谢您的回答,

文森特

+0

在server1页面加载一个隐藏的Server2的iFrame,然后在iFrame中获取所需的cookies等。通过Javascript将消息传递回server1。 – 2010-11-19 09:02:07

回答

1

这取决于这些服务器的域名。如果它们是server1.example.comserver2.example.com,则可以设置Cookie以依赖域.example.com。然后将cookies发送到两台服务器。

如果你不能像我写的那样做,你将不得不做一些解决方法。例如通过iFrame。

0

我同意@Jakub所说的,并进一步解释您的情况可能发生的情况。我假设你的域名为server1.com和server2.com

因此,如果你要从server2.com上的应用程序设置一个cookie,并向server1.com上的应用程序发出JSONP请求server1.com,它会发送cookie,如果他们以前从server1.com设置。否则,它不会发送server2.com设置的任何cookie。实际上,浏览器从server2.com的应用程序向server1.com发出请求,该请求与server2.com完全相同,从CDN或任何其他服务器请求JavaScript文件。因此它不会发送任何server2.com cookie,否则它将成为浏览器的重大安全问题。

希望它是有道理的。