繁体   English   中英

从Flask API获取参数

[英]Get parameters from a flask api

我试图使我的角度应用程序与Flask内置的API通信。 一切顺利,直到我尝试向Flask发出get请求,并尝试在Flask中检索其参数。 注意:如果不涉及参数,则可以,并且以其他方式发送参数也可以。

所以这是我的烧瓶代码:

app = Flask(__name__)
CORS(app,resources={r"/api/*": {"origins": "*"}})

class Load(Resource):
    def get(self) :
        return json.dumps(['test1','test2','test3'])

class Save(Resource):
    def get(self) :
        print json.loads(request.args.get('data'));
        return make_response('', 201)

api = Api(app)
api.add_resource(Load, '/api/load')
api.add_resource(Save, '/api/save')

这是我的客户端代码

$scope.load = function()
{                 
      $http.get("http://127.0.0.1:5000/api/load").then(function(result)
      {
                info = JSON.parse(result.data);
                $scope.elems.push(...info); // Some array is filled
      });
}

$scope.save = function()
{
      $http.get("http://127.0.0.1:5000/api/save",{data: JSON.stringify($scope.elems)})
                    .then(function(result){});
}

“加载”效果很好,而“保存”却给我以下错误:Access-Control-Allow-Origin不允许使用Origin null。

万一它可能会帮助我尝试删除“ request.args.get”行,但我没有收到任何错误。 有什么线索吗?

我解决了这个问题。 我不确定为什么/怎么做,如果有人有更完整的答案,请随时添加/修改。 因此,问题在于CORS(app)允许一种通信方式,而不允许另一种通信方式。 要修复它,您必须在从angularjs执行请求时添加正确的标头。

为此,我认为不可能使用$ http.get,因为您无法指定标头。 可能是:

  • 使用显然已经具有所需标头的jQuery中的$ .get()(这对我有用)
  • 使用$ http并放置显式标题
$http({
  method: 'GET',
  url: '/someUrl',
  headers: {
            'Access-Control-Allow-Origin': '*'
        }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM