1.cookie
因为http协议属于无状态协议,它不跟踪从一个客户端到另一个客户端的请求信息。也就是说即使第一次和服务器连接后并且登录成功,第二次请求服务器依然不知道请求的是哪个用户。
所以使用cookie来解决这个问题:第一次登录成功后,服务器返回cookie给浏览器,然后浏览器保存在本地,当用户发送第二次请求时,就会自动的把上次请求存储的cookie数据携带给服务器,服务器再根据cookie数据判断是哪个用户。
2.session
session和cookie的作用类似,也是用来存储用户相关的信息,存储在服务器端。把用户的信息经过加密后存储在session中,然后产生一个唯一的session_id。
3. 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框架采用的就是这种方式,但是可以替换成其他形式。
4.flask的session机制
把用户信息经过加密后放入到session中,然后把session存放到cookie中。下次请求时,从浏览器发送过来的cookie中读取到session,然后再从session中读取数据并解密,获取最终的用户数据。这样可以节省服务器开销。