有谁知道我是否可以为当前域设置会话值,并将此会话用于其他域?
例如:
当我在域名www.aabc.com中设置会话时,我希望此会话也可以在www.ccc.com域中运行 - 我点击www.aabc.com上的按钮并将标题更改为www.ccc .COM?
答案 0 :(得分:3)
我不得不在上一份工作中做好准备。它的处理方式是通过一些挥手和半安全的哈希传递。
基本上,每个站点,站点A和站点B在每个域上都具有相同的网关设置。网关接受user ID
,timestamp
,redirect URL
和hash
。 hash
由shared key
,timestamp
,user ID
组成。
站点A生成哈希,并将上面列出的所有信息发送到站点B的网关。然后,站点B将收到的已通过的user ID
和timestamp
与shared key
进行哈希处理。
如果生成的哈希与收到的哈希匹配,则网关将用户登录并从共享内存表或memcached池加载其会话,并将用户重定向到收到的redirect url
。
最后,timestamp
用于确定提供的传递hash
的到期时间(例如:哈希仅在x
时间内有效)。大约2.5分钟的东西就是我们用于TTL的东西(考虑到网络延迟,或者刷新一两次)。
这里的关键点是:
希望这很有用。
答案 1 :(得分:2)
您只能为您的域(以及域名中的其他网站,如子域名,如果我没记错的话)设置Cookie。
这是(主要是?)出于安全原因:否则,任何人都可以为任何网站设置cookie ...我让你想象一下这个烂摊子^^
(为另一个域设置cookie的唯一方法似乎是利用浏览器的安全漏洞 - 例如,请参阅http://en.wikipedia.org/wiki/Cross-site_cooking;因此,在正常情况下,不可能 - 很高兴)
答案 2 :(得分:2)
您无法直接访问这两个域会话,但是,有合法的解决方案可以在您控制的两个站点之间传递会话数据。对于可以被篡改的数据,您只需在域abc.com上有一个页面,在xyz.com上加载1px xpp的“图像”,并在查询字符串中传递相应的数据。这是非常不安全的,所以要确保用户不会通过篡改来破坏任何东西。
另一种选择是使用某种常见的商店。如果他们可以访问同一个数据库,则可以是域abc.com存储记录的表,然后将记录的id传递给域xyz.com。如果您尝试传递登录信息,这是一种更合适的方法。只需确保您对ID进行模糊处理,以便用户无法猜出另一个记录ID。
如果这两个域位于不同的服务器上或无法访问同一个数据库,那么公共存储方法的另一种方法是实现某种缓存存储服务,该服务将存储信息一段时间并且可由两个域访问。域abc.com传入一些数据,服务传回域abc.com发送到域xyz.com的ID,然后域xyz.com返回到请求数据的服务。同样,如果您自己开发此服务,请确保对这些ID进行模糊处理。