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

Bri*_*one 7 cookies subdomain coldfusion cross-domain

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

HTTPS会不会让这个变得不可能?

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

Jas*_*ean 6

这真的很容易.创建cookie时,请为其指定与您的域相同的域属性.要记住的重要部分是它必须有一个前导点.

<cfcookie name="mycookie" value="myvalue" domain=".mydomain.com" path="/" />
Run Code Online (Sandbox Code Playgroud)

前导点告诉浏览器将cookie发送到mydomain.com的任何子域,其中包括sub.mydomain.com和blah.mydomain.com.

然后,您就可以像访问任何其他cookie一样从任何子域访问cookie:

<cfset thevalue = cookie.mycookie />
Run Code Online (Sandbox Code Playgroud)

您应该将此作为支持旧版浏览器的最佳做法.

以下是RFC2109:可能影响旧浏览器的HTTP状态管理机制的声明

"为了防止可能的安全或隐私侵犯,用户代理拒绝cookie(不应存储其信息),如果......域属性的值不包含嵌入点或不以点开头."

我认为这被RFC 2965:HTTP状态管理机制所取代

"Domain = value OPTIONAL.Domain属性的值指定cookie有效的域.如果明确指定的值不以点开头,则用户代理提供前导点."

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

  • 对于所有浏览器,可能不需要前导点,但它可能适用于某些浏览器.包含它是最佳做法.由用户代理(浏览器)决定是否缺少前导点意味着它应该包含子域,因此通过包含它来明确定义行为符合您的最佳利益. (3认同)