什么是Cookie?
Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发送请求时,同时会发送所有为该服务器存储的 cookie
什么是Session?
Session 是存储在 web 服务器端的一块信息。session 对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去
两者的区别:
1.作用范围不同
Cookie 保存在客户端(浏览器)
Session 保存在服务器端
2.存取方式不同
Cookie 只能存储 String 类型的对象
Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。
3.有效期不同
Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能
Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效
用户登录信息保存在两者的优缺点:
保存在cookie:
优点:数据保存在客户端,方便用户下次登录.如:“记住密码”功能
缺点:安全性不高,一般都是将数据加密后保存在cookie中
保存在session中:
优点:整个应用可以从session中获取用户信息,并且查询时很方便.在session中保存用户信息是不可缺少的(web应用中)
缺点:session中不宜保存大量信息,会增加内存消耗
cookie和session结合使用
web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:
1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。
2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。