我在http://localhost:5000运行了一个Flask API,其Angular前端运行在http://localhost:9000。
当我尝试从角度点击Flask API时,我得到:
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
几乎所有我读到的内容都说我只需要运行一个Web服务器,但我是。
我发现的唯一另一件事是http://www.davidadamojr.com/handling-cors-requests-in-flask-restful-apis/,它说要将以下内容添加到烧瓶应用中。
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Origin', '*')
response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
return response
但这仍然无法解决问题。
这是角度工厂方法:
'use strict';
angular.module('clinicalTrialsApp').factory('searchFactory', ['$http', '$q', 'esFactory', 'filterService', function ($http, $q, esFactory, filterService) {
var baseUrl = "localhost:5000/clinical_trial/api/v1.0/"
return {
getById: function(id) {
return $http({
method: "GET",
url: baseUrl + id
});
}
}
}]);
这是烧瓶api方法
@app.route('/clinical_trial/api/v1.0/<string:nct_id>', methods=['GET'])
def get_by_id(nct_id):
trial = es.search(
index= 'clinical_trials',
body= {
"query": {
"match": {
"filename": nct_id
}
}
}
)
return jsonify({'trial': trial})