测开之路一百三十九:会话管理之cookie写入、读取、和更新
机制:服务器端发送的小段文本信息存储在客户端硬盘
功能:记录用户偏好,请求、页面、站点间共享信息
特点:易丢失、安全隐患
添加cookie,需要用到make_respons.set_cookie
@app.route('/setck/')
def setck():
""" 添加cookie """
response = make_response('ok')
response.set_cookie('username', 'aaa')
return response
可在浏览器上设置是否存cookie,如谷歌:隐私设置-网站设置-cookie
查看cookie内容:查看所有cookie和网站数据,搜索要查看的域名,默认过期时间是关闭浏览器即失效
获取请求里面的cookie:request.cookies.get('xxx')
@app.route('/getck/')
def getck():
""" 获取cookie request.cookies.get('xxx') """
ck = request.cookies.get('username')
if ck:
return ck
return '未获取到cookie'
set_cookie的一些参数
@app.route('/setck/')
def setck():
""" 添加cookie,timedelta由datatime导入 """
response = make_response('ok')
response.set_cookie('username', 'aaa', path='/', expires=datetime.now() + timedelta(days=7))
# set_cookie 参数
# dmain='baidu.com' 指定cookie只对baidu.com起作用
# path='/' 此cookie能访问的路径
# httponly=True 只能http访问,默认关闭
# max_age=60 cookie生命周期,默认为None,浏览器关闭时销毁,单位为秒
# expires=datetime.now() + timedelta(days=7) # 指定过期时间为7天
return response
删除cookie:由于不允许直接操作硬盘,所以采用更新cookie生效时间的方法,找到cookie,把生效时间设为当前时间之前
@app.route('/rmck/')
def remove_cookie():
""" 删除cookie,
由于不允许直接操作硬盘,所以采用更新cookie生效时间的方法
找到cookie,把生效时间设为当前时间之前
"""
resp = make_response('删除cookie')
# 把生效时间设为上一秒
resp.set_cookie('username', '', expires=datetime.now() + timedelta(minutes=-1))
return resp
讨论群:249728408