Flask跨域无法与名称空间配合使用

时间:2019-02-27 08:30:13

标签: python flask cors namespaces cross-domain

从flask_cors导入和CORS之后,我得到了flask服务器来支持来自本地主机的请求。但前提是请求位于api.route下。

对于命名空间下的任何目标,我得到 访问CORS策略已阻止从源“ http://127.0.0.1:5151/api/hello2”获取“ http://localhost:3000”的权限

app.py

app = Flask(__name__)
CORS(app, resources={r"/*": {"origins":"*"}})
...
...
def initialize_app(flask_app):
"""
Register blueprints and append all namespaces
"""
    blueprint = Blueprint('api', __name__, url_prefix='/api')
    api.init_app(blueprint)
    api.add_namespace(hello_namespace)

    flask_app.register_blueprint(blueprint)

restplus.py

api = Api(version='1.0', title='API', description='API ...')

@api.route('/hello')
class HelloWorld(Resource):            
    def get(self):                     
        return {'hello': 'world from API'}

Namespace.py

ns = api.namespace('hello2', description='Hello endpoints')

@ns.route('/')
@api.doc(responses={404: 'Failed to connect'}, description='List all')
class HelloList(Resource):
    def get(self):
        return [{'hello': 'world from API'}]

http://127.0.0.1:5151/api/hello获取数据有效。 http://127.0.0.1:5151/api/hello2给我一个错误。

请指向正确的方向。

1 个答案:

答案 0 :(得分:0)

corydolphin 评论于2016年3月18日 https://github.com/corydolphin/flask-cors/issues/128#issuecomment-198453999

“我希望发生的事情是Flask默默地从'foo'重定向到'foo /'。Flask自动执行此操作。”

通过在客户端的请求中添加尾部斜杠来进行改进。 http://127.0.0.1:5151/api/hello2/现在正在工作。