flask中的状态保持

 

状态保持

因为 http 是⼀种⽆状态协议,浏览器请求服务器是⽆状态的。
⽆状态:指⼀次⽤户请求时,浏览器、服务器⽆法知道之前这个⽤户做过什么,每次请求都是⼀次新的请求。
⽆状态原因:浏览器与服务器是使⽤ socket 套接字进⾏通信的,服务器将请求结果返回给浏览器之后,会关闭当
前的 socket 连接,⽽且服务器也会在处理⻚⾯完毕之后销毁⻚⾯对象。
有时需要保持下来⽤户浏览的状态,⽐如⽤户是否登录过,浏览过哪些商品等
实现状态保持主要有两种⽅式:
在客户端存储信息使⽤ Cookie
在服务器端存储信息使⽤ Session

Cookie

Cookie:指某些⽹站为了辨别⽤户身份、进⾏会话跟踪⽽储存在⽤户本地的数据(通常经过加密)。
复数形式Cookies。
Cookie最早是⽹景公司的前雇员Lou Montulli在1993年3⽉的发明。
Cookie是由服务器端⽣成,发送给客户端浏览器,浏览器会将Cookie的key/value保存,下次请求同⼀⽹站时
就发送该Cookie给服务器(前提是浏览器设置为启⽤cookie)。
Cookie的key/value可以由服务器端⾃⼰定义。
应⽤:
最典型的应⽤是判定注册⽤户是否已经登录⽹站,⽤户可能会得到提示,是否在下⼀次进⼊此⽹站时保留⽤户
信息以便简化登录⼿续,这些都是Cookie的功⽤。
⽹站的⼴告推送,经常遇到访问某个⽹站时,会弹出⼩窗⼝,展示我们曾经在购物⽹站上看过的商品信息。
购物⻋,⽤户可能会在⼀段时间内在同⼀家⽹站的不同⻚⾯中选择不同的商品,这些信息都会写⼊Cookie,以
便在最后付款时提取信息。
提示:
Cookie是存储在浏览器中的⼀段纯⽂本信息,建议不要存储敏感信息如密码,因为电脑上的浏览器可能被其它
⼈使⽤
Cookie基于域名安全,不同域名的Cookie是不能互相访问的
如访问itcast.cn时向浏览器中写了Cookie信息,使⽤同⼀浏览器访问baidu.com时,⽆法访问到itcast.cn写
的Cookie信息
浏览器的同源策略
当浏览器请求某⽹站时,会将本⽹站下所有Cookie信息提交给服务器,所以在request中可以读取Cookie信息

设置cookie

from flask imoprt Flask,make_response
@app.route('/cookie')
def set_cookie():
resp = make_response('this is to set cookie')
resp.set_cookie('username', 'hello')
return resp

设置过期时间

@app.route('/cookie')
def set_cookie():
response = make_response('hello world')
response.set_cookie('username', 'hello', max_age=3600)
return response

获取cookie

from flask import Flask,request
#获取cookie
@app.route('/request')
def resp_cookie():
resp = request.cookies.get('username')
return resp

Session

1.对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如⽤户名、余额、等级、验证码等信息
2.在服务器端进⾏状态保持的⽅案就是 Session
3.Session依赖于Cookie

session数据的获取

@app.route('/index1')
def index1():
session['username'] = 'hello'
return redirect(url_for('index'))
@app.route('/')
def index():
return session.get('username')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值