Flask-JWT-Extended报Missing Authorization Header错误求助
1. 移除GET请求的body字段
HTTP标准中GET请求不应包含body部分,部分服务器或代理会拦截这类请求,导致请求头无法正常传递。修改React代码:
const getAllProjects=()=>{ const token = localStorage.getItem('REACT_TOKEN_AUTH_KEY'); console.log(token) const requestOptions = { method: 'GET', headers: { 'content-type': 'application/json', 'Authorization': `Bearer ${JSON.parse(token)}` } // 移除多余的body字段 } fetch('/project/projects', requestOptions) .then(res => res.json()) .then(data => { setProjects(data) }) .catch(err => console.log(err)) }
2. 验证Authorization头的正确性
- 确认
localStorage.getItem('REACT_TOKEN_AUTH_KEY')的存储格式:- 如果存储的是原始token字符串(如
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...),无需JSON.parse,直接使用:'Authorization': `Bearer ${token}` - 打开浏览器开发者工具的Network标签,查看请求头确认
Authorization格式为Bearer [token],无多余空格或解析错误。
- 如果存储的是原始token字符串(如
3. 检查Flask-Cors配置
确保Flask应用正确配置CORS,允许携带自定义头:
from flask_cors import CORS app = Flask(__name__) # 生产环境建议指定具体域名,避免全量开放 CORS(app, supports_credentials=True, expose_headers=['Authorization'])
如果使用flask-restx命名空间,需确保CORS配置覆盖所有相关路由。
4. 验证Flask-JWT-Extended基础配置
确认Flask应用正确初始化JWT扩展并设置密钥:
from flask_jwt_extended import JWTManager app.config['JWT_SECRET_KEY'] = 'your-secure-random-secret' # 生产环境使用强随机密钥 jwt = JWTManager(app)
若使用工厂模式,需确保JWTManager正确绑定到app实例。
5. 核对路由与请求路径
确认前端请求路径/project/projects与后端路由匹配:
- 检查
project_ns的命名空间前缀是否为/project,若前缀不同需调整前端请求路径。 - 查看Flask控制台日志,确认实际收到的请求路径与后端路由一致。
6. 调试请求头是否到达后端
添加调试路由打印所有请求头,确认Authorization是否被接收:
@app.route('/debug-headers') def debug_headers(): from flask import request print(dict(request.headers)) return 'OK'
前端请求该路由后,查看后端控制台输出,确认Authorization头是否存在。
内容的提问来源于stack exchange,提问作者3awny
相关产品推荐
相关产品推荐

