Flask学习笔记---状态保持
来源:互联网 发布:手机淘宝修改退款金额 编辑:程序博客网 时间:2024/06/15 14:22
Http是一种无状态协议,若要实现状态保持,可以通过两种方式:cookie 和 session
1.设置cookie,本质上就是设置响应头上的值而已,所以有两种方式:
@app.route("/")
def demo1():
response = make_response(u"创造一个响应")
response.set_cookie("name","heima")---------------------------第1种方式
response.set_cookie("age","18",max_age = 3600)-----------------------也可设置过期时间,单位是秒
response.headers["Set-Cookie"] = "gender=11; Expires=Thu, 30-Nov-2017 13:43:32 GMT; Max-Age=3600; Path=/"-----------------------第2种方式
return response
2.获取cookie
@app.route("/get_cookie")
def demo2():
age = request.cookies.get("age")
return "cookie %s" % age
3.删除cookie---逻辑删除,并非真正意义上的删除,只是设置过期时间为创建时间。
@app.route("/delete_cookie")
def demo3():
response = make_response("delete success")
response.delete_cookie("age")
return response
1.设置session:必须设置secret_key
@app.route("/set_session")
def demo4():
session["user_id"] = "18"
return "set success"
RuntimeError: the session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
app.secret_key = "aaa" 点击进去:
#: If a secret key is set, cryptographic components can use this to
#: sign cookies and other things. Set this to a complex random value
#: when you want to use the secure cookie for instance.
检查:Set-Cookie:session=eyJ1c2VyX2lkIjp7IiBiIjoiTVRnPSJ9fQ.DQKgzg.P7z3XyoYpibeyAx3poMbszf7caI; HttpOnly; Path=/
一般情况下,secret_key设置越复杂越好,否则会被反解出来的,我们可以通过:操作终端进行加密
import os
os.urandom(48)
u=os.urandom(48)
import base64
base64.b64encode(u)
Out[6]: 'fet//U1RWo7LDdGLFsNVLGY5FA7iBgzSJyz1xx9K4iPhyjPwYI34RPqCs6zJ+SM5'
secret_key= 'fet//U1RWo7LDdGLFsNVLGY5FA7iBgzSJyz1xx9K4iPhyjPwYI34RPqCs6zJ+SM5'
2.获取session
@app.route("/get_session")
def demo5():
user_id = session.get("user_id")
return "session %s" % user_id
3.session扩展机制:
问题:
(1)当浏览器不支持cookie保存肿么办?思路:如何解决问题以及解决问题以后还会出现的问题。可以把session保存在url当中,但是下次访问时候,依然还是要全部输入sid;
(2)后端如何判断客户端是否可以保存cookie?思路:设置session,如果取不到说明不能保存或者cookie关闭;
(3)现在session一般保存在Mysql或者Redis数据库中,因为访问多个服务器时候会很麻烦。
- Flask学习笔记---状态保持
- Flask学习总结笔记(9) -- 利用Flask-Login维护用户登录状态
- JDK6.0学习笔记(十七)用HttpUnit保持状态
- ASP.NET常用信息保持状态学习笔记一
- ASP.NET常用信息保持状态学习笔记二
- Flask-SQLALchemy学习笔记
- Flask学习笔记-1
- Flask源码学习笔记
- flask学习笔记
- flask学习笔记(-模板)
- flask学习笔记(-数据库)
- flask学习笔记
- Flask--学习笔记-注册
- Flask学习笔记
- Flask 学习笔记
- Flask学习笔记 -- 1
- Flask学习笔记-- 2
- Flask学习笔记-- 3
- 安卓属性动画之插值器(TimeInterpolator)和估值器(TypeEvaluator)
- 阿里云 mysql不定时down掉的解决方案
- HMTL基础知识
- 水平居中和垂直居中
- 解决cocos creator访问微信头像链接不成功问题!
- Flask学习笔记---状态保持
- git 克隆项目以及分支切换以及冲突的解决以及文件的推送
- ubuntu编译安装opencv3到anaconda虚拟环境
- 学生排队
- secureCRT直接登录linux的root用户
- Android自定义View之仿京东售后审核进度
- 头疼
- 机器学习笔记(七) 正则化
- 每天回顾linux命令(id)