这是没有www的架构限制吗? :

时间:2011-09-19 04:12:19

标签: php asp.net perl jsp web

如果我属于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

有一个子域名
  

现在,问题是即使我没有在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

http://sd.qweop.com/read.php

<?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,他们仍然可以他们想要的任何,目前没有任何浏览器的记录(这很可能也是如此)未来)。

2 个答案:

答案 0 :(得分:2)

我相信你无能为力。您可以尝试将cookie设置为:

setcookie('some_name', 'some_val', 0, '/', 'yourdomain');

但它会设置为yourdomain的所有子域名,即使RFC 2109表示如果要匹配子域名,则应使用点.yourdomain设置。所有主流浏览器都将其发送到子域。我用IE,FF和Chrome检查了它。

答案 1 :(得分:0)

不幸的是,DNS配置与cookie完全无关(只要它们属于同一个第二级域,当然)。

如果你提出一个实际的问题,你仍然可以得到一个实际的答案。