2012-08-13 47 views
6

我一直在试图找出一种方法来跨多个子域共享Cookie。跨选择子域使用相同的cookie

设置Cookie一样:

setcookie('token', base64_encode(serialize($token)), time()+10800, '/', '.mydomain.com'); 

正是这么做的。但这里有一个小问题。 这将跨所有子域共享cookie。

我的问题是,我有其他环境(开发和测试)设置在2个子域。 我正在寻找一种在“选择性”子域之间共享Cookie的方法。即跨越一些子域共享,而不是在其他域中共享。我不确定是否存在这样的事情。

任何帮助表示赞赏。 谢谢。

+0

您可以在您的Cookie名称中添加前缀。 dev_token,prod_token,无论你需要什么。 – Tchoupi 2012-08-13 11:25:09

+1

我不认为解决方案是为了做到你想要的东西而存在。你可以做的是保护你的cookie不被所有子域访问。您可以以某种方式编码您的cookie,并提供选择性的子域名解码。或者您可以同时为每个您需要的域明确设置Cookie。就像你在代码中的相同位置设置dev_cookie和test_cookie一样。 – zysoft 2012-08-13 11:49:27

+1

据我所知和其他人已经提到这是不可能的。你唯一的解决办法是以不同的名称命名。除非你为你的开发环境获得了一个不同的域名,这似乎有点多。 – diggersworld 2012-08-13 13:10:06

回答

0

经过思考和研究了很多关于它并阅读了上面提到的所有有价值的评论之后,我想这里没有简单的解决方案。

我本来可以由阿德里安Hingert提供的解决方案,但是这意味着额外的检查,每次用户用武之地。

我想我离开了我,没有别的选择,只能将我的开发和测试环境到另一个域。

非常感谢你们所有人的想法。

1

据我所知,你可以使用'.mydomain.com'来共享所有子域名(如你所做的那样),或者你必须是特定的,并且只使用'test'来定位一个子域名。 mydomain.com”。

您也可以使用一些技巧或解决方法,比如为cookie名称加上前缀,然后执行逻辑服务器端,但我不确定这是否是您正在寻找的解决方案。

0

属性domain=.example.com明确地让cookie可用于所有子域。只要删除该属性,cookie就只能由设置它的子域读取。

就是这么简单。