Flask的会话技术-Cookie和Session介绍
一、 Cookie
客户端端的会话技术
cookie本身由浏览器保存,通过Response将cookie写到浏览器上,下一次访问,浏览器会根据不同的规则携带cookie过来
特点:
- 客户端会话技术,浏览器的会话技术
- 数据全都是存储在客户端中
- 存储使用的键值对结构进行的存储
- 特性
- 支持过期时间
- 默认会自动携带本网站的所有cookie
- 根据域名进行cookie存储
- 不能跨域名
- 不能跨浏览器
- Cookie是通过服务器创建的Response来创建的
设置cookie:
response.set_cookie(‘key’,value[,max_age=None,exprise=None)]
max_age: 整数,指定cookie过期时间
expries: 整数,指定过期时间,可以指定一个具体日期时间
max_age和expries两个选一个指定
# res.set_cookie('user',username,max_age=86400)
# res.set_cookie('user', username, expires=datetime.datetime(2019,8,21,8,0,0))
获取cookie:
request.cookies.get(’key’)
# user = request.cookies.get('user')
删除cookie
response.delete_cookie(‘key’)
# res.delete_cookie('user')
二、session
服务器端会话技术,依赖于cookie
特点:
- 服务端的会话技术
- 所有数据存储在服务器中
- 默认存储在内存中
- django是默认做了数据持久化(存在了数据库中)
- 存储结构也是key-value形势,键值对
- session 是离不开cookie的
【session】是一个全局变量,使用时导入即可
常用操作:
设置session
session[‘key’] = ‘value’
#session['user'] = username
获取session
session.get(key,default=None) 根据键获取会话的值
#user = session.get('user')
删除session
session.pop(key) 删除某一值
session.clear() 清除所有
#session.pop('user')
cookie和session的区别:
cookie:
1. 在浏览器存储
2. 安全性较低
3. 可以减轻服务器压力
session:
1. 在服务器端存储
2. 安全性高
3. 对服务器要求较高
4. 依赖cookie