当我使用angular将数据发布到服务器时,会发送2个请求(POST和OPTIONS方法)

时间:2015-07-30 06:24:29

标签: angularjs

我是Angularjs的初学者。当我使用angular将数据发布到服务器时,会发送2个请求(POST和OPTIONS方法)。是否可以只发送1个请求?

我使用$http$http.post$resource进行测试,但未解决。

感谢。

我的代码......

$http({
          method: 'POST',
          url: myUrl,
          data: 'test'                    
      });

...这...

$http.post(myUrl ,'test data')
     .then(function(resp) {
         console.log('Success', resp);
     }, function(err) {
         console.error('ERR', err);
     });

...和

var app = angular.module('myApp', ['ngResource']);
app.controller("HttpController", [ '$scope', '$resource',
    function($scope, $resource) {
        $scope.saveUser = function(){
            var User = $resource(myUrl);
            User.save( myData , function(response){
            // ....
        });
    }
}]);

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

很遗憾,您的请求网址在屏幕截图中不可见。但我猜你的后端并不像前端那样运行。 因此,需要进行跨源资源共享(CORS)。

HTTP选项调用由浏览器自动完成,以确定您是否具有执行所需HTTP调用的权限。见preflight requests

答案 1 :(得分:0)

到目前为止,我知道OPTIONS方法用于识别用户是否有权发出请求(下一个,在你的情况下是POST,test1.php)。在您对OPTIONS请求的回复中,您应该允许方法,允许来源和其他一些东西(这里是完整的explonation https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)。所以回答你的问题...只要你从客户端发出请求+请求URI不在你的来源(域) - CORS原则总是出现 - >你总是要做OPTIONS请求。