当由不同的域发起时,coldfusion会话被丢弃

时间:2013-03-05 21:36:21

标签: session coldfusion dns session-cookies

我的登录页面位于一个域中,而应用程序位于另一个域上。

当我使用来自单独域的登录时,会话变量不会存储在第二个域中,即使这是创建它们的域。

要明确,我不是在域之间共享会话

登录域在应用程序域上运行脚本,应用程序在该域中创建会话变量。 在应用程序域中调用重定向时,不会传输此变量。

如果我从同一个域调用脚本,会话将按预期存储。有趣的是,直到今天这个工作正常。有些cf设置也许改变了。

我注意到CFID和CFTOKEN正在通过,会话是否可以使用推荐网站的CFID和CFTOKEN编写?

如果是这样,我怎么能阻止它?

1 个答案:

答案 0 :(得分:3)

您可以通过在Application.cfc中设置this.setclientcookies = false来覆盖默认会话Cookie行为,并在Application.cfc的onSessionStart()

中发布您的cfcookie

e.g。

<cfcomponent>
  <cfset this.sessionmanagement = true>
  <cfset this.setclientcookies = false>
  <cffunction name="onSessionStart">
      <cfcookie name="CFID" value="#session.cfid#" domain=".subdomain.domain.com">
      <cfcookie name="CFTOKEN" value="#session.cftoken#" domain=".subdomain.domain.com">
  </cffunction>
<cfcomponent>

当你在这里时,将httpOnly属性设置为true也是个好主意。