http headers 中可以携带cookie信息,但首次request访问是没有cookie的,服务器根据需要(一般用在登录验证身份时)在response 中返回cookie,客户端会根据这个cookie信息设置自己再次request时的cookie,这样,服务器在接收到请求后会知道这个请求是上次请求的延续。服务器还可以维护cookie 与身份信息的对应关系,将此kv保存在服务器端,用于会话session保持。
sanic 中cookie 有三种用法: 读取、写入和删除。
读取: request.cookies.get("cookiename")
写入: response.cookies[''cookiename] = "your cookie name"
response.cookies[''cookiename]["max-age"] = 200
删除: del response.cookies["cookiename"]
from sanic import Sanic
from sanic import response
from sanic.response import text
app = Sanic("hello, this is my first sanic app") #Sanic() 用于实例化
@app.route("/")
async def set_cookie(request):
if request.cookies.get("user") is None:
response = text(" Counld not find cookie user ,so the program set the cookie {}".format(request.cookies.get("user")))
response.cookies['user'] = "username"
response.cookies['user']["max-age"] = 100
else:
response = text("found cookie user {} is headers ".format(request.cookies.get("user")))
#response.cookies['user']['domain'] = 'cvicse2'
response.cookies['user'] = "username2"
response.cookies['user']["max-age"] = 200
return response
@app.get("/delcookie")
async def del_cookie(request):
if request.cookies.get("user") is None:
response = text(" your request has no cookie ")
else:
response = text(" your request has cookie ,this page will remove cookie")
del response.cookies['user']
return response
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000, access_log=False)
通过开发者工具可以看到cookies的交互情况
第一次访问,request 没有cookie ,response 会带有cookie
第二次访问,request携带cookie,response 返回修改的cookie值username2
访问delcookie 时