bottle框架学习(五)使用cookie与signed cookie跟踪客户

添加cookie

调用response.set_cookie(‘name’,’value’)
其他可选参数:

  • max_age=x(seconds)
  • expires=datetime
  • domain=默认为当前域
  • path=’/’
  • secure=off/on,限制必须HTTPS连接
  • httponly=on/off

from bottle import route,run,response

@route('/')
def index():
    response.set_cookie('name','sunchengquan')
    return 'bottle set cookie'

run(host='localhost',port=80,debug=True,reloader=True)

获取cookie

request.get_cookie(‘name’)


from bottle import route,run,response,request

@route('/')
def index():
    response.set_cookie('name','sunchengquan')
    return 'bottle set cookie'

@route('/getcookie')
def getcookie():
    return request.get_cookie('name')


run(host='localhost',port=80,debug=True,reloader=True)

这里写图片描述
客户端保存cookie,服务器端取出它,用于跟踪用户

添加签名的cookie

对客户端保存的value值进行加密处理
response.set_cookie(‘name’,’value’,secret=’…’)

from bottle import route,run,response,request
@route('/setsign')
def setsign():
    response.set_cookie('sname','sunchengquan',secret='gfdf@#$$%')
    return 'bottle set signed cookie'

run(host='localhost',port=80,debug=True,reloader=True)

获取签名的cookie

from bottle import route,run,response,request
@route('/setsign')
def setsign():
    response.set_cookie('sname','sunchengquan',secret='gfdf@#$$%')
    return 'bottle set signed cookie'

@route('/getsign')
def getsign():
    return request.get_cookie('sname',secret='gfdf@#$$%')

run(host='localhost',port=80,debug=True,reloader=True)

这里写图片描述

中文cookie问题的处理

设置普通的cookie中有中文时,使用urllib.parse.quote对其进行URL编码
获取这种cookie时:用urllib.parse.unquote对其进行URL解码。

from urllib.parse import quote,unquote
from bottle import route,run,response,request

@route('/')
def index():
    response.set_cookie('name','sunchengquan')
    response.set_cookie('myname', quote('孙权'))
    return 'bottle set cookie'

@route('/getcookie')
def getcookie():
    return unquote(request.get_cookie('myname'))
run(host='localhost',port=80,debug=True,reloader=True)

这里写图片描述

设置签名的cookie则直接使用


@route('/setzhcookie')
def setzh():
    response.set_cookie('yourname','我',secret='hdfjgh%^&**')
    return 'bottle set signed cookie'

@route('/getzhcookie')
def getzh():
    return request.get_cookie('yourname',secret='hdfjgh%^&**')

这里写图片描述

猜你喜欢

转载自blog.csdn.net/sunchengquan/article/details/79558365