我需要使用ColdFusion从https://sub1.domain.com读取在http://origin.domain.com上创建的Cookie。我已经看到很多关于如何使用CFCOOKIE在子域中创建cookie的信息,但我不知道如何访问已经存在的cookie。
HTTPS无论如何都会让这个变得不可能吗?
附录: 下面的检查答案正确解决了上述问题。就我而言,它没有用。我应该解释一下:sub1.domain.com上的cookie是由托管的第三方产品创建的 - 不是用coldfusion编写的,不在我的控制之下。
答案 0 :(得分:6)
这真的很容易。创建cookie时,请为其指定与您的域相同的域属性。要记住的重要部分是它必须有一个前导点。
<cfcookie name="mycookie" value="myvalue" domain=".mydomain.com" path="/" />
前导点告诉浏览器将cookie发送到mydomain.com的任何子域,其中包括sub.mydomain.com和blah.mydomain.com。
然后,您就可以像访问任何其他Cookie一样从任何子域访问Cookie:
<cfset thevalue = cookie.mycookie />
您应该将此作为支持旧浏览器的最佳做法。
以下是来自RFC2109的声明:可能影响旧版浏览器的HTTP状态管理机制
“为了防止可能的安全或隐私侵犯,用户代理 如果......拒绝cookie(不应存储其信息) Domain属性不包含嵌入点或不包含 一个圆点。“
我认为这被RFC 2965覆盖:HTTP状态管理机制陈述
“Domain = value OPTIONAL.Domain属性的值指定 cookie有效的域。如果明确指定 值不以点开头,用户代理提供前导 点“。
这解释了为什么它可能适合你,大概是一个现代浏览器。我仍然建议你添加它。