【问题标题】:Options is coming instead of put [duplicate]选项来了,而不是 put [重复]
【发布时间】:2019-02-07 13:46:36
【问题描述】:

这是前端部分

$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

【问题讨论】:

    标签: angularjs node.js ajax


    【解决方案1】:

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

    我很确定这里发生的情况是,当您进行 PUT 调用时,$http 首先进行 OPTIONS 调用以查看 API 是否支持 CORS。但既然没有,它就会返回一个错误。此错误在您的 .catch 块中被捕获。

    如果这是一个 GET 请求,您可以使用 JSONP 而不是 GET(考虑到 API 支持的 JSONP 请求)。

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

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

    希望这是有道理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-27
      • 2012-09-13
      • 2014-03-14
      • 1970-01-01
      • 2016-10-22
      • 2018-02-01
      相关资源
      最近更新 更多