Создал 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)