flask demo
#!/user/bin/env python
# -*- coding: utf-8 -*-
from flask import Flask, session, Request, request, make_response
app = Flask(__name__)
request: Request
app.secret_key = "key"
@app. route( "/session")
def session_handle() :
for k, v in request.args.items ( ) :
session [k] = v
resp = make_response({k: v for k, v in session.items()})
for k, v in request.args.items ( ) :
resp.set_cookie( f"cookie_{k}", v)
return resp
普通get请求与设置session请求的diff
- session数据存到服务端,session是一套数据的管理机制
- session加密的内容会存到cookie中,通常称为 基于cookie的session
cookie的作用
- 访问时会携带cookie信息,即使修改url的路径也会携带同样的cookie
-
sessionId以cookie的形式存放在客户端,以此来访问服务端信息
session与cookie的区别
- cookie:浏览器接受服务器的Set-Cookie指令,并把cookie保存到电脑上,每个网站保存的cookie只作用于自己的网站
- session:数据存储到服务端,只把关联数据的一个加密串放到cookie中标记
token应用场景
凭借认证信息获取token,或者通过后台配置好token
在相关请求中使用token,多数是以query参数的形态提供
参考OAuth认证、企业微信、微信、github、gitlab等相关认证
-
以企业微信为例:此token通常有过期时间
-
以GitHub为例:此token通常不过期,可长期使用
session与token的区别
- token是一个用户请求时附带的请求字段,用于验证身份与权限
- session可以基于cookie,也可以基于query参数,用于关联用户相关数据
- 跨端应用的时候,比如android原生系统不支持cookie
- 需要用token识别用户
- 需要用把sessionid保存到http请求中的header或者query字段中
下一节:Mock应用,通过代理修改请求与响应,辅助构造更多场景实例。