我打算将此作为对亚历山大的优秀答案的评论,但它会变得有点冗长。
cookie在浏览器中保留多长时间以及服务器在没有请求的情况下保留会话数据的时间是2个单独且独立的事情。由于HTTP的无状态特性,无法避免这种情况 - 尽管您可以采取一些措施来缓解您认为的安全漏洞。
对于浏览器在关闭后访问同一会话并且有一些延迟,它要求浏览器保留会话cookie(Alexander已经解释过)并且服务器保留了会话数据。
您描述的行为在处理少量请求的系统上可能会更加明显,并且会话处理程序不会验证sesion数据的TTL(我不确定默认处理程序是否执行,或者它们是否只是假设任何未删除的会话数据被视为当前数据。
您没有提供有关如何配置2台服务器的任何详细信息,尤其是session.gc_maxlifetime。
如果session.gc_maxlifetime在请求之间已经过期但会话数据仍然可访问,则这意味着会话处理程序仅将此视为会话被认为有资格进行垃圾收集的时间(从语义上讲,这是配置选项的用途) )。然而,有一个强有力的理由将此值视为TTL。要解决此问题,您可以强制垃圾收集更频繁地运行并删除会话数据,或使用会话处理程序忽略早于指定限制的会话数据。
您看到两个系统之间的差异可能是由于session.gc_maxlifetime的值不同或垃圾收集频率的差异甚至是不同的会话处理程序。
本文探讨了HTTP无状态特性下,浏览器与服务器如何通过Cookie和会话数据保持连接状态。重点讨论了会话数据保留时间及浏览器关闭后再次访问同一会话的问题。

594


被折叠的 条评论
为什么被折叠?



