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

AngularJS调用Python API遇CORS错误:Access-Control-Allow-Origin缺失求解

解决AngularJS调用Python API时的CORS跨域错误

别担心,这个问题其实非常常见,本质是浏览器的同源策略在限制跨域请求!你的前端运行在http://0.0.0.0:8000,而Python API在http://localhost:3000,两者端口不同属于不同的“源”,浏览器会默认阻止这种跨域请求,除非API明确返回允许跨域的响应头。

下面给你几种可行的解决方案,按推荐程度排序:

方案1:给Python API添加CORS支持(最推荐)

这是标准且通用的解决办法,只需要在你的Python API中添加Access-Control-Allow-Origin响应头,不同框架的实现方式略有不同:

如果用Flask框架

  1. 先安装flask-cors扩展:
    pip install flask-cors
    
  2. 在你的Flask应用中启用CORS:
    from flask import Flask
    from flask_cors import CORS
    
    app = Flask(__name__)
    # 开发环境可以直接允许所有源,生产环境记得替换成你的前端域名
    CORS(app)
    
    # 你的API路由和业务逻辑代码...
    

如果用Django框架

  1. 安装django-cors-headers包:
    pip install django-cors-headers
    
  2. 修改settings.py配置:
    INSTALLED_APPS = [
        # 其他已有的app...
        'corsheaders',
    ]
    
    MIDDLEWARE = [
        'corsheaders.middleware.CorsMiddleware',  # 放在CommonMiddleware之前
        'django.middleware.common.CommonMiddleware',
        # 其他中间件...
    ]
    
    # 开发环境允许所有源,生产环境改为具体的前端域名列表
    CORS_ALLOW_ALL_ORIGINS = True
    

如果是自定义的Python HTTP服务器

如果是自己手动实现的HTTP服务器(比如基于BaseHTTPServer),可以直接在响应中添加头:

def do_GET(self):
    # 处理你的请求逻辑,生成要返回的JSON数据
    response_data = '{"key": "value"}'
    
    self.send_response(200)
    # 允许所有源跨域,生产环境替换为你的前端域名
    self.send_header('Access-Control-Allow-Origin', '*')
    self.send_header('Content-Type', 'application/json')
    self.end_headers()
    self.wfile.write(response_data.encode('utf-8'))

方案2:开发环境临时替代(不推荐用于生产)

如果你只是在本地开发测试,不想修改API代码,可以用以下临时方法:

  • 浏览器插件:安装Chrome的Allow CORS: Access-Control-Allow-Origin插件,临时禁用浏览器的同源策略限制(仅开发用,上线前记得关闭)。
  • 前端代理:如果用Node.js工具链,可以用http-proxy-middleware把前端的API请求转发到Python API的端口,避免跨域。

额外说明

你的AngularJS控制器代码是没问题的,只要API那边正确处理了CORS,请求就能正常返回数据并赋值给$scope.Clientes。

生产环境一定要注意:不要用*允许所有源,要指定具体的前端域名(比如http://your-production-frontend.com),避免安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:11:23