0

最近我在一个项目上工作,这是一个实时 Web 应用程序。

我使用socket.io作为数据服务器,假设它的域是www.a.com. 另一方面,我使用express作为 http 服务器,它的域是www.b.com.

现在问题来了,如果我想同步两个服务器之间的会话(也就是说,如果用户www.a.com通过socket.io登录,他/她访问时他/她已经登录www.b.com),我该怎么做?

提前致谢 :)

ps:请原谅我的英文不好...

== 更新 ==

我尝试了一种解决方案:使用 的魔法postMessage在不同的选项卡之间进行通信。

当用户登录时www.a.com,我创建一个iframe,其src引用www.b.com. 然后我可以将登录数据从 传递www.a.comwww.b.com,并触发一些东西来登录www.b.com

但我认为这不是解决问题的最佳方法,安全吗?或产生其他问题?我想知道是否还有其他解决方案。

4

1 回答 1

0

就其性质而言,cookie(存储会话 ID)无法从不同的域中读取。我知道 Apache 的一个 mod 可以加密来自一个域的登录数据并将其放在 GET 请求(地址栏)中,这样用户就不必登录到第二个域。抱歉,我不记得它叫什么了,但你可以做类似的事情,我相信你只需要 require('crypto')。

编辑:为什么要让套接字和 Web 服务器在不同的域上运行?如果他们在同一个域上运行,我相信有一个模块可以让 sockets.io 获取会话数据。我自己没有使用它,只是阅读它。

于 2013-12-30T14:59:47.310 回答