You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask-JWT-Extended报Missing Authorization Header错误求助

解决方案:Flask JWT 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],无多余空格或解析错误。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:35:28