【问题标题】:Domain level session cookie on multiple domains多个域上的域级会话 cookie
【发布时间】:2013-07-03 17:56:26
【问题描述】:

如果您希望 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 并让它选择相关的域?

谢谢。

【问题讨论】:

    标签: jakarta-ee coldfusion jrun


    【解决方案1】:

    我设法找到了the DTD for jrun-web.xml(@ 顶部的链接指向已失效的 Macromedia URL)。

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

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

    这也不行。

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

    【讨论】:

      【解决方案2】:
      <cfapplication
         setdomaincookies=yes
         .....>
      

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

      CFApplication(参见 setDomainCookies 部分)

      【讨论】:

      • 这只会影响 CFID 和 CFTOKEN。我们正在使用不受此设置影响的 J2EE 会话。
      【解决方案3】:

      我认为您可以使用&lt;CFHEADER&gt; 来设置域cookie 而不是&lt;CFCOOKIE&gt;

      【讨论】:

      • 如果您可以使用 CFHEADER 来操作由 cfapplication 创建的 cookie,我会感到惊讶。也许发布一个你见过的例子?
      【解决方案4】:

      我认为,如果您使用 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">
      

      【讨论】:

        猜你喜欢
        • 2013-10-08
        • 2010-09-27
        • 2019-12-16
        • 2013-11-19
        • 2016-09-24
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 2011-04-25
        相关资源
        最近更新 更多