我需要分享以下会话: domain.com, sub1.domain.com sub2.domain.com
但他们也必须与其他域合作。 例如,如果我选择session.domain =" .domain.com" - 会话不适用于" another.com"
由于
答案 0 :(得分:0)
您无法在不同的域之间共享会话,因为它们被会话Cookie域设置锁定。
您 **可以** 根据您可以存储在Redis(服务器端)等内容中的Cookie值检索关联数据。它需要的是一些可由另一个域客户端(通过JavaScript)读取的公共标识符(例如用户ID)。
麻烦的是将值从一个站点传递到另一个站点,甚至是另一个子域。您需要一个中央集线器来连接存储值并且是cookie域的发起者。您可以通过引用存储在第二个域上的cookie值将某些细节从一个域传递到另一个域,并根据您存储的值传回数据(例如通过ajax)。
Origin (Hub) Domain: cookie.domain.com
Subdomain 1: subdomain1.domain.com
Subdomain 2: subdomain2.domain.com
Different Domain: www.differentdomain.com
Cookie Domain: cookie.domain.com
JavaScript Domain: cookie.domain.com
这样,JavaScript可以读取存储在cookie.domain.com中的cookie,然后与当前客户端会话甚至是当前页面所源自的服务器/域进行交互。
如果你看看Facebook / Twitter如何注入他们的脚本和cookie,他们来自同一个域/子域(这就是我为以前的项目解决这个问题的方法)。