在 flask 中,为什么请求标头在 app.before_request() 中为 None?



当我尝试在用 @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...requestbefoe? 我还在寻找参考

这就是为什么我只是通过条件语句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

最新更新