我的办公室里有一台开发服务器,位于防火墙后面。主机名是富兰克林。我们将所有服务器命名为科学家或发明者。
当我设置HTTP cookie时:
Set-Cookie: user=kenny; expires=1245424860.11; Path=/; domain=franklin
Cookie未设置。我试过以下没有运气。
.franklin
.franklin.local
franklin.local
.franklin.localdomain
franklin.localdomain
我是否必须将主机名设置为不同的主机名,还是可以通过我不知道的魔法设置此cookie?
答案 0 :(得分:7)
RFC 2109说:
为了防止可能的安全或隐私侵犯,用户代理 拒绝一个cookie(不得存储其信息),如果有的话 以下是真的:
- “域”属性的值不包含嵌入点或 不是以点开头。
- 请求主机的值与域不匹配 属性。
还有:
域默认为请求主机。
如果你的主人是franklin
:
domain=.franklin
的Cookie将被拒绝,因为它没有嵌入点。domain=.franklin.local
的Cookie将被拒绝,因为它与您服务器的实际主机名不符。解决方案是将您的主机名重命名为franklin.local
或franklin.<tld>
,并相应地设置Cookie的domain
属性(domain=.franklin.<tld>
)。或者(如您所知),不要指定domain
,并让用户代理回退到请求主机。
答案 1 :(得分:0)
您是否从正确的域中设置了Cookie?您应该访问http://franklin/以上的网站,否则它将无效(请参阅:相同的原始政策)。