选项来了,而不是 put [重复]

Posted

技术标签:

【中文标题】选项来了,而不是 put [重复]【英文标题】:Options is coming instead of put [duplicate] 【发布时间】: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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

希望这是有道理的。

【讨论】:

以上是关于选项来了,而不是 put [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我想在新选项卡而不是同一选项卡中打开此路由器链接[重复]

当自动缩放组启动 EC2 时自动执行 grafana。而不是重复选项

.htaccess,X-frame-options 不覆盖值,而是在网络选项卡中重复显示

如何在Angular 7中单击按钮时获取下拉列表的选定选项[重复]

下拉菜单的第一个选项不是选项;强制使用其他选项[重复]

使用 jQuery 获取所选选项的文本 [重复]