在ColdFusion中读取跨域(跨子域)Cookie(HTTPS)

时间:2011-12-13 23:59:21

标签: cookies coldfusion cross-domain subdomain

我需要使用ColdFusion从https://sub1.domain.com读取在http://origin.domain.com上创建的Cookie。我已经看到很多关于如何使用CFCOOKIE在子域中创建cookie的信息,但我不知道如何访问已经存在的cookie。

HTTPS无论如何都会让这个变得不可能吗?

附录: 下面的检查答案正确解决了上述问题。就我而言,它没有用。我应该解释一下:sub1.domain.com上的cookie是由托管的第三方产品创建的 - 不是用coldfusion编写的,不在我的控制之下。

1 个答案:

答案 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有效的域。如果明确指定   值不以点开头,用户代理提供前导   点“。

这解释了为什么它可能适合你,大概是一个现代浏览器。我仍然建议你添加它。