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 了解如何启用此功能。
我正在 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 了解如何启用此功能。