当我尝试在用 @app.before_request 注释的函数中访问请求的标头时,它始终是 None。以前有人遇到过这个问题吗? 这是函数:
@app.before_request
def verifyToken():
if request.endpoint in ['myEndpoint']
auth = request.headers.get('Authorization')
if auth.startswith('Bearer '):
jwtToken = auth[7:]
try:
decoded = jwt.decode(jwtToken, 'secret_key', algorithms=['HS256'])
except jwt.ExpiredSignatureError as e:
responseObject = {
"status": "failed",
"message": "Token has expired. Please login again."
}
return jsonify(responseObject), 401
我在Flask
年 5 个月了,我发现 Flask 嵌入式中间件启动了 2 次,第一个得到 None 值,第二个是客户端请求,每次启动都有不同的request.method
,客户端的OPTIONS
和<DEFAULT METHOD>
,为什么before...request
首先有一个OPTIONS
方法,而客户端请求中after...request
befoe? 我还在寻找参考
这就是为什么我只是通过条件语句if request.method != 'OPTIONS':
来捕获它,它看起来像
from flask import request
def my_before_request():
if request.method !== 'OPTIONS'
token = request.headers['<header var>']
# do something...
# same as after request
由于请求是预检的,OPTIONS 方法可能已由浏览器触发。这样做是为了确定实际请求是否可以安全发送。参考 CORS