多个域上的域级会话cookie

时间:2012-02-15 12:26:44

标签: java-ee coldfusion jrun

如果您希望ColdFusion将会话Cookie创建为域级Cookie,例如.bar.com而不是foo.bar.com然后你可以在jrun-web.xml中配置它: -

<session-config>    
   <cookie-config>
          <active>true</active>
          <cookie-domain>.bar.com</cookie-domain>
   </cookie-config>
  <persistence-config>
    <active>false</active>
  </persistence-config>
</session-config>

但是,这是一个实例范围的设置,因此如果您要在该实例上运行两个应用程序,或者实际上一个应用程序运行具有或更多不同的顶级域名,那么其中一个应用程序将具有无效的会话。

有没有办法将多个域添加到jrun-web.xml并让它选择相关的域?

感谢。

4 个答案:

答案 0 :(得分:2)

我设法找到the DTD for jrun-web.xml(链接@顶部指向已停用的Macromedia网址)。

这指定XML中只能有一个<cookie-domain>节点。我还测试了一个域名列表,例如:

<cookie-domain>.domainA.com,.domainB.com</cookie-domain>

这也不起作用。

不是绝对的答案,但我怀疑它可能不可能(!),并且肯定不可能通过jrun-web.xml(我想至少回答你的一个问题)。

答案 1 :(得分:0)

我认为您可以使用<CFHEADER>来设置域Cookie而不是<CFCOOKIE>

答案 2 :(得分:0)

<cfapplication
   setdomaincookies=yes
   .....>

这会将您的cfid和cftoken Cookie设置为域Cookie(* .bar.com),而不是特定于主机的值(foo.bar.com)。

CFApplication(请参阅有关setDomainCookies的部分)

答案 3 :(得分:-1)

我认为如果使用cgi.server_name变量命名应用程序,并且每个站点使用相同的application.cfc或application.cfm文件,那么会话和cookie变量将适用于每个站点。例如:

<cfapplication name="#cgi.server_name#" sessionmanagement="YES" clientmanagement="YES" sessiontimeout="#CreateTimeSpan(1,0,0,0)#" applicationtimeout="#CreateTimeSpan(1,0,0,0)#"  clientstorage="COOKIE" setclientcookies="YES">