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

重装Python后Django+Vue项目XMLHttpRequest出现CORS错误如何解决?

Access to XMLHttpRequest at 'localhost:8000/admin/login/?next=/api/report_builder/api/fields' (redirected from 'localhost:8000/api/report_builder/api/fields') from origin 'localhost:8080' has been blocked by CORS policy: Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response.

页面及报错截图

可能成因
  • Django跨域依赖缺失:重装Python后原虚拟环境的django-cors-headers包未被重新安装,导致跨域配置完全失效
  • 跨域配置不匹配:新安装的django-cors-headers版本和原项目适配的版本不一致,旧版本默认允许Authorization头,新版本需要手动配置放行
  • 中间件顺序错误:settings.py中corsheaders.middleware.CorsMiddleware的位置不在中间件列表最前端,导致跨域头未被正确注入响应
  • 认证失效触发重定向:请求携带的Authorization信息无效,Django将API请求重定向到admin登录页,而登录页的响应未携带跨域许可头,进一步触发CORS拦截
解决建议
  • 修复依赖:激活项目对应的虚拟环境,执行pip install django-cors-headers安装对应依赖,若有旧版本要求可指定版本号安装,比如pip install django-cors-headers==3.13.0
  • 核对settings配置:
    • 确认INSTALLED_APPS列表中已添加corsheaders
    • 确认MIDDLEWARE列表中corsheaders.middleware.CorsMiddleware放在所有中间件的最前位,优先级高于django.middleware.common.CommonMiddleware
    • 添加显式跨域配置:
      # 放行前端地址
      CORS_ALLOWED_ORIGINS = [
          "http://localhost:8080",
      ]
      # 允许携带认证信息
      CORS_ALLOW_CREDENTIALS = True
      # 放行Authorization请求头
      CORS_ALLOW_HEADERS = [
          "authorization",
          "content-type",
      ]
      # 开发阶段临时调试可开启以下配置,生产环境务必关闭
      # CORS_ALLOW_ALL_ORIGINS = True
      
  • 修复重定向问题:检查前端携带的token是否有效、是否过期,后端API优先使用JWT等无会话认证方式,避免未认证时自动重定向到admin登录页
  • 重启服务验证:修改完配置后完全重启Django后端服务,前端清理浏览器缓存后再发起请求测试。

内容的提问来源于stack exchange,提问作者Mahmoud khaywe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:04