python客户端修改session_Python Flask详解:装填保持、Cookie、Session实例

状态保持

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

无状态协议:

协议对于事务处理没有记忆能力对同一个 url 请求没有上下文关系每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器人生若只如初见

状态举例:

有状态:A:你今天中午吃的啥?B:吃的大盘鸡。A:味道怎么样呀?B:还不错,挺好吃的。无状态:A:你今天中午吃的啥?B:吃的大盘鸡。A:味道怎么样呀?B:???啊?啥?啥味道怎么样?所以需要cookie这种东西:A:你今天中午吃的啥?B:吃的大盘鸡。A:你今天中午吃的大盘鸡味道怎么样呀?B:还不错,挺好吃的。

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', 'itcast')

return resp

设置过期时间

@app.route('/cookie')

def set_cookie():

response = make_response('hello world')

response.set_cookie('username', 'itheima', 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

对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息在服务器端进行状态保持的方案就是SessionSession依赖于Cookie

session数据的获取

session:请求上下文对象,用于处理http请求中的一些数据内容

@app.route('/index1')

def index1():

session['username'] = 'itcast'

return redirect(url_for('index'))

@app.route('/')

def index():

return session.get('username')

记得设置secret_key: app.secret_key = 'itheima'secret_key的作用:https://segmentfault.com/q/1010000007295395

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值