如果我属于no-www camp,我http://example.com
中设置的Cookie将由http://sub-domain.example.com
读取,
无论我使用哪种语言(perl / asp.net / php / JSP),没办法我都可以解决这个问题,因为它本身就是HTTP的基础架构,< strong> true 或 false ?
我在这里关注的是,是否存在阻止http://sub-domain.example.com
读取http://example.com
中设置的Cookie的DNS配置?
我有一个域名http://qweop.com
有一个子域名现在,问题是即使我没有在
http://sd.qweop.com
设置任何cookie,当我读取cookie时,那里有cookie。他们正在阅读http://qweop.com
的Cookie。
如何修复问题,以便主域中的cookie不会被子域读取(请求)?
我已经尝试更改php setcookie函数的第5个参数,但似乎没有做任何事情。基本上这个参数就像没用。我怀疑它是HTTP基础设施的限制。
详情:
http://qweop.com/set.php(尝试使用隐身功能以便轻松删除Cookie)
<?php setcookie("testcookie","testvalue",time()+60*60*24*30,"/","qweop.com");?>
cookies set
<?php print_r($_COOKIE); ?>
// No one had set any cookies in http://sd.qweop.com but we can see cookies here! Error!
答案:是
在谷歌研究500小时后,我最好将答案列在此处。
基本上,如果我们计划使用任何其他子域并且我们希望它们不含cookie,我们应该始终使用www。这是因为顶级域名Cookie存在不同的浏览器行为。
我们可以尽力告诉浏览器“嘿,它只是设置域名,而不是它的子域名”,但只要网址是非www,它们就不会很好,并且表现得像我们一样想要他们。
事实上,即使网址不是非www,他们仍然可以他们想要的任何,目前没有任何浏览器的记录(这很可能也是如此)未来)。
答案 0 :(得分:2)
我相信你无能为力。您可以尝试将cookie设置为:
setcookie('some_name', 'some_val', 0, '/', 'yourdomain');
但它会设置为yourdomain
的所有子域名,即使RFC 2109表示如果要匹配子域名,则应使用点.yourdomain
设置。所有主流浏览器都将其发送到子域。我用IE,FF和Chrome检查了它。
答案 1 :(得分:0)
不幸的是,DNS配置与cookie完全无关(只要它们属于同一个第二级域,当然)。
如果你提出一个实际的问题,你仍然可以得到一个实际的答案。