Cookie和Session的区别(面试必备)_cookie和session的作用和区别-CSDN博客
cooike和session都是用来跟踪浏览器用户身份的会话方式
ookie数据存放在客户的浏览器上,session数据放在服务器上
cooike相对于session来说的话,安全性没那么高,因为别人可以分析存放在本地的cooike来进行登录你的账号,毕竟cooike是存放在客户端上的(所以网吧不建议登steam是不是因为这个,别人会通过这个破坏账号?)
但这里的安全性是相对而言的,cookie和session都保存有在客户端的部分,只要被窃取都可以进行劫持,在这方面两者安全性没有本质上的区别。但是session放在缓存中,在进程关闭后,浏览器会销毁掉相关session信息,从这个角度来看,session相对安全。其实都不安全
session
简单的说,当你登陆一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。由于数据是存储在服务器上面,所以不能伪造,session的过期与否,是服务器决定的
session的ID存在有效期的,默认是会话期,会话结束了,session_id就废弃了
设置session
@app.route("/set_session")
def set_session():
"""设置session"""
session['username'] = 'xiaoming'
session['info'] = {
"name": "xiaohong",
"age": 16,
}
return "set_session"
可以通过客户端浏览器中的sessionid观察,其实默认情况下,flask中的session数据会被加密保存到cookie中的。当然,将来,我们可以采用flask-session第三方模块把数据转存到其他的存储设备,例如:redis或者mysql中。
获取session
@app.route("/get_session")
def get_session():
"""获取session"""
print(session.get('username'))
print(session.get('info'))
return "get session"
删除session
@app.route("/del_session")
def del_session():
"""删除session,键如果不存在,则会抛出异常,所以删除之前需要判断键是否存在。"""
if "username" in session:
session.pop("username")
if "info" in session:
session.pop("info")
return "del_session"