我最近在Spring MVC应用程序中实现了基于JDBC的Spring会话。尽管在localhost上进行测试时,我可以看到在每个请求上都设置了SESSIONID,但是当升级到真正的DEV或UAT环境时,却从未在浏览器中设置SESSIONID,因此从服务器的角度来看,每个请求都被视为一个全新的会话。 。
奇怪的是,一旦我通过点击不存在的路由来强制执行错误,SESSIONID就会在浏览器中设置,并正确地与以后的每个请求关联。
我已经看到了该问题的解决方案,该解决方案通过在请求中不包含Cookie的情况下简单地在响应中添加一个cookie来解决此问题,但是我不确定为什么首先会出现此问题,并且想知道是否存在是解决该问题的一种更优雅的方法。
我在错误控制器路由中看到的唯一区别是它正在设置HTTP响应代码,而应用程序中的所有其他路由都没有显式设置响应代码。
总而言之,我想知道:
为什么这个问题只出现在真实环境中(这是一个Intranet应用程序,但我们使用的是.local URI)。
为什么点击错误页面会导致设置弹簧会话?
相对于手动创建会话并在请求中不包含SessionID的情况下,将set-cookie标头添加到响应中,是否有更好的解决方案?