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