期权来了而不是卖出了

时间:2018-09-02 04:04:32

标签: angularjs node.js ajax

这是前端部分

$scope.result = {};

$scope.edit = function() {
  console.log($scope.result); //This is working
  $http.put('http://localhost:4000/customer/' + $routeParams.id, $scope.result)
    .then(function(data) {
      $scope.result = data;
      console.log("posted successfully") //This is not working
    })
    .catch(function(err) {
      console.log(err);
    });
}

每次赶上.catch

1 个答案:

答案 0 :(得分:0)

OPTIONS调用通常是单独进行的,以检查API是否允许CORS处理来自特定域的请求。

我非常确定这里发生的事情是,当您进行PUT调用时,$http首先进行了OPTIONS调用,以查看API是否支持{{1 }}。但是由于没有,它返回一个错误。此错误已捕获在您的CORS块中。

如果这是GET请求,则可以使用.catch代替JSONP(考虑到API支持的GET请求)。

但是,既然不是,您可以在这里做两件事:

  1. 如果您可以控制API,则将您的域列入API的白名单。
  2. 创建一个代理,该代理会将您的请求中继到该API。由于此代理将被视为服务器而非客户端,并且CORS只是基于浏览器的策略,因此您的请求将成功通过。

希望这很有道理。