2016-11-01 55 views
0

我正在開發一個本地主機上的cherrypy應用程序,並寫了這個來弄清楚會議上發生了什麼。cherrypy'tools.sessions.secure'似乎正在打破會話

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。我想更好地理解這裏發生的事情,因爲我打算在生產中使用安全會話。

回答

0

我剛剛偶然發現了同樣的問題。

這是因爲將'tools.sessions.secure'設置爲True會將「安全」標誌添加到存儲會話標識的生成cookie中。

如果您在CherryPy中未使用HTTPS,則此cookie將不會在任何後續請求中返回,因此每次都會生成一個新的會話ID。

在CherryPy中啓用HTTPS可修復此問題。請參閱CherryPy documentation on SSL瞭解如何開啓此功能。