Несколько пространств имен для restplus, похоже, не работают с CORS - PullRequest
0 голосов
/ 25 февраля 2019

Создал API с flask-restplus, и он прекрасно работает, включая поддержку cors, но когда я попытался улучшить структуру / документацию, разделив пространство имен на 2 отдельных, CORS @cors.crossdomain(origin='*') больше не работает,получая обычную ошибку:

Access to XMLHttpRequest at 'http://localhost:5000/api/ca/apps' from origin 'http://localhost:1429' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Код с двумя пространствами имен можно увидеть ниже.Если я верну его обратно в одно пространство имен, проблем не будет.Есть идеи?

from flask import Flask, request
from flask_restplus import Resource, Api, cors, reqparse
from flask.json import jsonify
import json
import sentiment

app = Flask(__name__)
api = Api(app)

# define the name spaces
ns_ca = api.namespace('ca_shared', description='Shared CA operations')
ns_ml = api.namespace('machine_learning', description='Machine Learning operations')

APPS = {
    "Advocate": {
        "name": "Advocate",
        "href": "some_href",
        "icon": "fa-deer",
    }
}

# CA Apps common tasks
@ns_ca.route('/api/ca/apps')
class CAFetchApps(Resource):
    @cors.crossdomain(origin='*')
    def get(self):
        return jsonify([APPS[key] for key in sorted(APPS.keys())])

@ns_ml.route('/api/ca/sentiment', methods=['post'])
@ns_ml.expect(sentiment_params)
class CASentimentClassification(Resource):
    @cors.crossdomain(origin='*')
    def post(self):
        args = sentiment_params.parse_args()
        return sentiment.sentimentClassification(args['phrase'],
                                                 args['domain'])

if __name__ == '__main__':
    app.run(debug=True)
...