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

Angular提交表单至Flask应用时遭遇CORS策略错误求助

解决Flask + Angular注册表单提交的CORS错误

嘿,我一眼就发现问题所在了!你代码里的CORS配置根本没生效,核心原因是:你先初始化了一个Flask实例并配置了CORS,但紧接着又用create_app(config_name)重新赋值了app变量——等于之前的CORS配置全白做了,实际运行的是create_app返回的那个未配置CORS的app实例!

修正方案

把CORS配置移到获取create_app返回的app之后,这样配置才会作用在实际运行的应用上。修正后的代码如下:

import os, sys
from flask import Flask
import pathlib
from flask_cors import CORS
from flask_restplus import Api, Resource, fields
from werkzeug.middleware.proxy_fix import ProxyFix
import coloredlogs, logging as log
coloredlogs.install()
from main.apis.user import api as User
from main.apis.auth import api as Auth
from main import create_app
from flask_pymongo import PyMongo

authorizations = {
    'token': {
        'type': 'apiKey',
        'in': 'header',
        'name': 'Authorization'
    }
}
config_name = os.getenv('FLASK_CONFIG')
# 先拿到真正要运行的app实例
app = create_app(config_name)
# 现在给这个app配置CORS
CORS(app, origins="http://localhost:4200", allow_headers=[
    "Content-Type", "Authorization", "Access-Control-Allow-Credentials","Access-Control-Allow-Origin"], supports_credentials=True, intercept_exceptions=False)

api = Api(app, authorizations=authorizations, version='1.0', title='API docs', description='A simple REST API with JWT authentication.', doc='/docs' )
app.config['jwt']._set_error_handler_callbacks(api)
app.config['ROOT_DIR'] = pathlib.Path(__file__).parent.absolute()

# Endpoints
api.add_namespace(Auth, path='/v1')
api.add_namespace(User, path='/v1')

# Run Server
if __name__ == '__main__':
    app.run()

额外调试建议

如果修正后还是有问题,可以试试这些步骤排查:

  • 先简化CORS配置测试:用CORS(app, origins="http://localhost:4200"),排除复杂头配置的干扰,确认基础跨域可用后再逐步添加其他配置
  • 检查create_app函数内部,有没有重置app的配置或者覆盖了CORS相关设置
  • 确认Angular端的请求是否携带了自定义头(比如Authorization),这类请求会触发OPTIONS预请求,flask_cors默认会自动处理OPTIONS请求,但如果有自定义的路由拦截器,要确保OPTIONS请求能正常返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:17:53