cookie:是一种保存数据的格式,也可以看成是保存数据的一个“盒子”,服务器返回cookie给浏览器(由服务器产生),由浏览器保存在本地,下次再访问此服务器时浏览器就会自动将此cookie一起发送给服务器。

session:也是一种保存数据的格式,也可以看成是保存数据的“盒子”,和cookie几乎是“同生共长”的,同cookie不同的是,session是保存在服务器中的。服务器通过cookie返回给浏览器session的相关信息(比如session的id),浏览器通过cookie将session的信息发送给服务器,服务器通过收到的cookie中的session信息来验证访问者的信息。

cookie和session之间的关系:一般来说,session中保存有敏感数据(这些数据会进行加密后保存),但是这些数据并不会发送到浏览器中去,而是通过浏览器发送来的cookie中的session的id来进行验证并使用这些敏感数据;同时session是可以设置过期时间的,到时间后就可以删除服务器中session的数据了,当浏览器中cookie中的session在服务器中找不到时,服务器会重新要求浏览器进行验证并生成新的session。

Flask中的session机制:session不是存放在服务器中的,而是将敏感数据进行加密后存放进session中,再将session放入cookie中返回给客户端(浏览器),下次浏览器访问服务器时,服务器从浏览器发送来的cookie中获取session,并将session中敏感数据解密后获取用户的数据。flask的这种session机制优点是可以节省服务器的开销。(如果使用的是谷歌浏览器,可以在“高级”-“隐私设置和安全性”-“内容设置”-“Cookie”-“查看所有Cookie和网站数据”找到对应网址的cookie,可以发现cookie中有命令session的数据,表明session确实是存放在浏览器的cookie中的)

Flask的session操作(from flask import session):

  1. 需要配置SECRET_KEY,值为包含24个字符的字符串(一般为随机字符串),使用“app.config['param_name']=value”的形式或者在配置文件中配置即可(注意:重启服务器后这个值改变了的话就获取不到之前设置的session了)。

  2. session可以看做是一个字典,session的增删改查操作跟字典的操作(包括使用的函数)是一样的。

  3. session过期时间设置:flask的session过期时间如果没有设置,那么默认就是浏览器回话结束(即关闭浏览器时)后自动过期,session的过期时间是由“session.permanent=True”指定,这时候会去读取配置中的“PERMANENT_SESSION_LIFETIME”的值(datetime.timedelta类型),这个值如果没有设置则默认是31天,也可以在配置中自己设置这个值,比如设置为7天:PERMANENT_SESSION_LIFETIME=datetime.timedelta(days=7)。

最新文章

  1. chown -R命令的使用
  2. NLPP-02-Exercises
  3. 选择排序(java版)
  4. eclipse字体推荐
  5. STL学习系列七:优先级队列priority_queue容器
  6. 【转载】干货再次来袭!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载八)用命令实现批量添加用户
  7. Asp.net MVC 视图之公用代码
  8. android开发之merge结合include优化布局
  9. Android之仿京东淘宝的自动无限轮播控件
  10. MyBatis起步
  11. Python中list的功能介绍
  12. 1091. Acute Stroke (30)
  13. webpack4 打包报错 :regeneratorRuntime is not defined
  14. 解决localdb中文智能的问题
  15. Charles 使用
  16. 阿里云免费SSL证书申请与安装使用(IIS7)
  17. Web APi入门之Self-Host寄宿及路由原理
  18. leetcode11
  19. day_5.27python网络编程
  20. Win10 下 VMware 的安装,以及 VMware 里安装 Ubuntu 18

热门文章

  1. pat1069. The Black Hole of Numbers (20)
  2. python 实例方法,类方法,静态方法
  3. yii:高级应用程序搭建数据库的详细流程
  4. JS 中的string.lastIndexOf()
  5. UVALive 4987 EvacuationPlan(dp,贪心)
  6. vuejs里面v-if,v-show和v-for
  7. python_图形界面编程示例
  8. Linux 下MySQL数据库配置远程访问
  9. Deep Learning 优化方法总结
  10. 记Tea使用中遇到的问题及解决过程