Cookies 使用ColdFusion';子域中的会话范围-Internet Explorer行为

Cookies 使用ColdFusion';子域中的会话范围-Internet Explorer行为,cookies,coldfusion,session-cookies,coldfusion-9,Cookies,Coldfusion,Session Cookies,Coldfusion 9,我在某个域名example.com上安装了一个ColdFusion 9应用程序, 另一个是建立在它的子域subdomain.example.com上的 在Application.cfc上,两个应用都启用了会话管理和特定于主机(非特定于域)的cookie: 使用IE时,第一次访问example.com将设置一对CFID;CFTOKEN。但是,如果没有指定cookie的DOMAIN属性(),IE会将这些cookie发送到所有嵌套的子域,这是一种已知的行为 不幸的是,会话范围就是这样。以下屏幕截图证明

我在某个域名example.com上安装了一个ColdFusion 9应用程序, 另一个是建立在它的子域subdomain.example.com上的

在Application.cfc上,两个应用都启用了会话管理和特定于主机(非特定于域)的cookie:

使用IE时,第一次访问example.com将设置一对CFID;CFTOKEN。但是,如果没有指定cookie的DOMAIN属性(),IE会将这些cookie发送到所有嵌套的子域,这是一种已知的行为

不幸的是,会话范围就是这样。以下屏幕截图证明了发送到IE或从IE发送的Cookie如何没有域属性集:

这会导致意外行为,因为subdomain.example.com上的应用程序将收到两对不同的CFID和CFTOKEN(来自example.com和subdomain.example.com)。ColdFusion将从浏览器中将其解释为无效答案,并将生成一对新的令牌,从而完成上一个会话

我能想到的一个解决方案是用CFCOOKIE替换SESSION的功能,总是指定域,例如

还有其他解决办法吗


或者为会话作用域设置的cookie指定域的方法?

仅为info添加此注释。ColdFusion 10有一个应用程序级设置,用于为会话cookie指定域(CFID和CFTOKEN)。您正在使用J2EE会话吗?我不认为您可以这样设置域,但是您可以设置
setClientCookies=false
,然后使用
cfcookie
cfheader
手动设置
CFID
CFTOKEN
cookies。然后您可以将域值设置为您喜欢的任何值。@SeanCoyne:谢谢您的想法。仅供参考,这里描述了您的建议。另一方面,我没有使用J2EE;你认为这会有所不同吗?我总是使用j2ee会话。我发现它更稳定。
SessionManagement = true;
SetDomainCookies = false;