我正试图从"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。