HTTP是一个没有状态的协议,这种特点带来的好处就是效率较高,但是缺点也非常明显,这个协议本身是不支持网站的关联的,比如https://ceshiren.com/和https://ceshiren.com/t/topic/9737/7这两个网站,必须要使用别的方法将它们两个关联起来。那就是session 、cookie 、token。
> 霍格沃兹测试学院 TestingStudio
-
session 即会话,是一种持久网络协议,起到了在用户端和服务器端创建关联,从而交换数据包的作用。
-
cookie 是“小型文本文件”,是某些网站为了辨别用户身份,进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
-
token 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。
演示环境搭建
与 get、post 区别实战详解 章节相同,为了避免其他因素的干扰,使用 Flask 编写一个简单的 demo server(Flask 的安装与启动参考 get、post 区别实战详解 章节),来演示 cookie 与 session。
demo server 演示代码
from flask import Flask,session,Request, request,make_responseapp = Flask(__name__)request: Requestapp.secret_key = "key"@app.route('/')def hello_world():
return 'Hello, World!'@app.route("/session")def session_handle():
#读取请求
for k, v in request.args.items():
#收到请求后写入session
session[k] = v
#创建服务器响应,将session的内容打印出来
resp = make_response({k: v for k, v in session.items()})
for k, v in request.args.items():
#给服务器设置cookie