tornado 3.0.1 中关于cookie和secure cookie的那点事儿

cookie是附加在http请求中的,tornado默认的set_cookie和get_cookie方法是明文不加密传输的,而set_secure_cookie和get_secure_cookie是明文加密传输的。代码见下:

import tornado.web  import tornado.ioloop    from tornado.options import define,options,parse_command_line  define('port',default=8888,help='run on the port',type=int)    class MainHandler(tornado.web.RequestHandler):      def get(self):          if not self.get_secure_cookie('username'):              self.set_secure_cookie('username','littlethunder')              self.write('just set your cookie')          else:              a=self.get_secure_cookie('username')              print(a)              self.write('you have cookie before')    def main():      parse_command_line()      app=tornado.web.Application(              [(r'/',MainHandler)],                  cookie_secret='abcde'              )      app.listen(options.port)      tornado.ioloop.IOLoop.instance().start()    if __name__=='__main__':      main()  

通过浏览器可以看到效果如下:

如果使用set_secure_cookie和get_secure_cookie方法,那么必须在tornado.web.Application中设置cookie_secret参数,’abcd’只是我测试写的,生产环境下可以用uuid生成一个随机字符串来用,但使用过程中要保证这个字符串恒定。 如果要用set_cookie和get_cookie方法,则只需把上面secure去掉,把cookie_secret参数也去掉即可,cookie就不截图了,是明文的。

最后总结一些cookie和secure_cookie的区别:cookie是基于session的,即打开浏览器设置cookie后,只要不关闭浏览器cookie会一直保存,关闭浏览器后cookie删除,其实就是保存在浏览器运行进程的那块内存中。secure_cookie是保存在硬盘中的cookie,过期时间为一个月,所以一旦设置secure_cookie后,不论浏览器关闭与否,只要不清空cookie,这个值就一直保存直到cookie过期失效。

原文出处:csdn -> https://blog.csdn.net/littlethunder/article/details/8933618

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。