ColdFusion:每次刷新都需要新的cfid

时间:2015-12-11 16:25:26

标签: coldfusion coldfusion-11

我将测试服务器从ColdFusion 10更新到ColdFusion 11 30天Enterprise trail edition with update 7。

但是,每当我在浏览器中点击刷新时,我都会得到一个新的cfid。 因此,找不到有效的会话,因此登录页面不起作用。

我在coldfusion管理页面中检查了会话,在浏览器中检查了我的cookie,它们都是正确创建的。

这就是我在application.cfm

中的内容
<CFAPPLICATION NAME="TESTWEB"
  CLIENTMANAGEMENT="Yes"
  SETCLIENTCOOKIES="Yes"
  SESSIONMANAGEMENT="Yes"
  SESSIONTIMEOUT = "#CreateTimeSpan(7,0,0,0)#"
  SETDOMAINCOOKIES = "No">

然而,当我从主机打开页面时,每次点击刷新时cfid都不会改变,所以一切正常。

知道什么可能导致我的问题吗?

编辑:

  1. 在登录期间,我有将cfid / cftoken设置为cookie的代码,但由于我更改为SETCLIENTCOOKIES =“是”,我删除了这些代码。唯一的其他地方就是退出。
  2. 我不使用jsessionids,只使用coldFusion会话ID。
  3. 所有会话变量的超时为7天。

2 个答案:

答案 0 :(得分:1)

我已经通过在ColdFusion管理员中启用它来切换到使用JEE会话。我的会议现在正在进行中。

答案 1 :(得分:1)

我知道这是一个老问题,但我会留在这里帮助其他人,以防他们尝试了上述所有方法但仍然遇到问题。

检查您的 Cookie Samesite 值。

如果您已将旧应用升级到较新的 CF 服务器,以防止 Coldfusion 在刷新时更改 CFID 和 CFTOKEN,或者在您进行引用会话或 cookie 变量的 AJAX 调用时更改 CFID 和 CFTOKEN - 以及上述其他人所述的所有推荐设置,请检查以下:

要在 CF 2016、2018 的服务器级别设置 Cookie Samesite 值:
在Coldfusion Admin Settings中,Server Settings > Memory Variables > Session Cookie Settings,将“Cookie Samesite默认值”设置为“-”或“LAX”(LAX为NULL时的默认值)

在站点级别设置 Cookie Samesite 值:
对于 ColdFusion(2018 版)更新 9 和 ColdFusion(2016 版)更新 15
您可以使用 cfcookie 标签。

对于使用 CF11 或更旧 CF 版本的用户,您可以在 IIS 或 Apache 中设置响应标头。我假设有这个问题的人(cfid 和 cftoken 在刷新时更改)是因为他们对 samesite 属性进行了更改并破坏了某些内容。在这种情况下,请查看您是如何实施 SameSite Cookie 的,以及您将该值设置为什么。

SameSite Cookies with IIS
SameSite cookies with Apache