用php为子域设置cookie获胜';不起作用


Setting cookie for subdomain with php won't work

我正试图从"example.com"设置一个cookie,使其只能访问"site.example.com"。问题是由于某种原因,这不起作用。例如,下面的代码工作正常:

setcookie('my_var', "hello", time()+3600, "/", 'example.com');

也就是说,当从example.com运行时,我可以在example.com网站上看到"my_var"cookie。但是,下面的代码没有设置cookie:

setcookie('my_var', "hello", time()+3600, "/", 'site.example.com');

(如果我准备了一个点,比如".site.example.com",也不会)

使用php 5.3.8和铬

正如Gumbo在评论中指出的,你不能为子域设置cookie,只能为同一域或超级域设置cookie,请参阅子域的域设置cookie

在我的案例中,我试图从sd1.example.com设置一个cookie来处理example.com、www.example.com、sd2.example.com等。

我尝试更改php.ini中的一些设置,明确列出了所有子域,但都不起作用。我意识到只有根域可以在其他子域上设置cookie,而一个子域不能在另一个子域上设置cookie。

因此,我在根域上制作了一个setcookie.php脚本,即example.com

sd1.example.com向以下脚本发送GET请求:

header("Location: //example.com/setcookie.php?value=" . $xxxxx);

并且在setcookie.php

setcookie("xxxxx", $_GET['value'], 0, "/", ".example.com");

这样,默认情况下可以从所有子域访问cookie。