ColdFusion:每次刷新都有新的 cfid

ColdFusion: new cfid with every refresh

我使用更新 7 将测试服务器从 ColdFusion 10 更新到 ColdFusion 11 30 天企业试用版。

但是,每次我在浏览器中点击刷新时,我都会得到一个新的 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="Yes",我删除了这些代码。唯一的其他地方是注销。
  2. 我没有使用 jsessionids,仅使用 coldFusion 会话 ID。
  3. 所有会话变量的超时为 7 天。

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

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

检查您的 Cookie Samesite 值。

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

要在服务器级别为 CF 2016、2018 设置 Cookie Samesite 值:
在 Coldfusion 管理设置中,服务器设置 > 内存变量 > Session Cookie 设置,将“Cookie Samesite 默认值”设置为“-”或“LAX”(LAX 为 NULL 时的默认值)

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

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

SameSite Cookies with IIS
SameSite cookies with Apache