在子域中使用ColdFusion的SESSION范围 - Internet Explorer行为

时间:2014-07-21 14:10:19

标签: cookies coldfusion session-cookies coldfusion-9

我在某个域example.com上设置了ColdFusion 9应用程序, 另一个在子域上设置,subdomain.example.com。

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

SessionManagement = true;
SetDomainCookies = false;

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

不幸的是,SESSION范围就是这种情况。以下屏幕截图证明了发送到IE或从IE发送的cookie没有设置域属性: enter image description here

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

我能想到的一个解决方案是用CFCOOKIE替换SESSION的功能,总是指定域,例如。 <cfcookie name="foo" value="bar" domain="#CGI.SERVER_NAME#" />

还有其他解决方案吗?

或者为SESSION范围设置的cookie指定域的方法?

0 个答案:

没有答案