如何解决:交叉源请求仅支持协议方案:http,数据,chrome,chrome-extension,https,chrome-extension-resource

时间:2016-03-25 03:13:17

标签: angularjs flask cors

我在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})

0 个答案:

没有答案