cherrypy 'tools.sessions.secure' 似乎中断了会话

cherrypy 'tools.sessions.secure' seems to be breaking sessions

我正在 localhost 上开发一个 cherrypy 应用程序并编写它来弄清楚会话发生了什么。

import cherrypy

class WhyNotSessions(object):

    @cherrypy.expose
    def index(self):
        if 'count' not in cherrypy.session:
            cherrypy.session['count'] = 0
        cherrypy.session['count'] += 1
        return "Session count is %s" % cherrypy.session.get('count')

if __name__ == '__main__':
    conf = {
        '/': {
            'tools.sessions.on': True,
            'tools.sessions.secure': True
        }
    }
    cherrypy.quickstart(WhyNotSessions(), '/', conf)

这按预期工作,count 在重新加载时递增 - 只要我从 conf 中注释掉 'tools.sessions.secure': True。我想更好地了解这里发生的事情,因为我打算在生产中使用安全会话。

我刚遇到同样的问题。

这是因为将 'tools.sessions.secure' 设置为 True 会将 'secure' 标志添加到生成的存储会话 ID 的 cookie。

如果您没有在 CherryPy 中使用 HTTPS,则此 cookie 将永远不会在任何后续请求中返回,因此每次都会生成一个新的会话 ID。

在 CherryPy 中启用 HTTPS 解决了这个问题。请参阅 CherryPy documentation on SSL 了解如何启用此功能。