情况:
.secure.example.com
。我不确定这是否与xcart相关,但setcookie
实际上是使用secure.example.com
调用的。我不确定为什么附加“.
”。问题:
当我尝试在https中使用setcookie
来使用域.example.com
或仅使用example.com
时,无论是否在http下运行商店,都不会创建Cookie HTTPS。我正在使用的测试代码是:
setcookie('three', 'two', 0, "/", ".example.com");
如果我将Cookie设置为secure.example.com
或.secure.example.com
,则会显示。
有没有出现cookie的原因?
答案 0 :(得分:3)
问题在于我使用localhost和一个单词域名'mydomain',这个事实由于某种原因被编辑出原始邮件。至少firefox要求显式设置cookie至少有两个单词,比如mydomain.local。我将hosts文件更改为域名:www.mydomain.local和secure.mydomain.local,我能够将cookie设置为.mydomain.local。
另外我发现php会自动输入“。”在明确设置cookie之前。
答案 1 :(得分:1)
是 - 但政策由浏览器确定(在某些浏览器上可以配置)。
IIRC前面的语义。在库克RFC中解释(2109用于标准cookie状态:A是FQDN字符串,格式为NB,其中N是非空名称 字符串,B的格式为.B',而B'是FQDN字符串。 (所以,x.y.com 域名匹配.y.com但不是y.com。)
我将其解释为意味着setcookie指令中的domian打算用作通配符匹配,应该以'。'开头。即.example.com - 但规范继续说:
域=域 可选的。 Domain属性指定用于的域 cookie有效。明确指定的域必须始终启动 带点。
对我而言,这恰恰相反。
我建议您自己read it并进行实验。
显而易见的实际解决方案是,在没有合适的cookie的情况下,重定向回到cookie设置的网络服务器,以便检查其cookie,然后将另一个重定向发送回原始服务器,并在查询字符串中包含cookie详细信息,然后删除与当前服务器关联的cookie的副本。
或者,您可能会因使用更多部分的FQDN而获得一些时间,例如
secure.www.example.com
和
www.example.com
(删除[。] www.example.com的cookie)
HTH
下进行。
答案 2 :(得分:0)
你试过setcookie('three', 'two', 0, "/", ".mydomain.com");
吗?