Javascript AngularJS$http.post()触发get请求而不是post

Javascript AngularJS$http.post()触发get请求而不是post,javascript,angularjs,api,http,Javascript,Angularjs,Api,Http,我在angular和laravel中构建了一个API服务,当我启动API的GET调用时,everythings工作正常,但是当我启动POST调用时,服务仍然使用GET方法而不是POST。 这就是我的服务: function LeadsAPI($http,$q,BASE_URL) { this.updateLead = function (lead_data) { var url = BASE_URL+"/leads/update/"; var deferre

我在angular和laravel中构建了一个API服务,当我启动API的GET调用时,everythings工作正常,但是当我启动POST调用时,服务仍然使用GET方法而不是POST。 这就是我的服务:

function LeadsAPI($http,$q,BASE_URL)
{
   this.updateLead = function (lead_data) {
        var url = BASE_URL+"/leads/update/";
        var deferred = $q.defer();
        $http.post(url , lead_data).then(function(response){
            deferred.resolve(response.data);
        });
        return deferred.promise;
    }
}
我从控制器调用此函数:

LeadsController.$inject = ['$scope', 'LeadsAPI'];
function LeadsController($scope , LeadsAPI)
{
  LeadsAPI.updateLead({'lead_id' : res._id, 'the_lead': {'fist_name' : 'asd asd'}}).then(function (res) {
            console.log(res);
        });
}
我尝试将参数作为字符串传递(“a=b&c=d…”),并添加了标题:

$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
在我的应用程序模块实例化的
run
函数中,我一直得到
405(不允许使用方法)
错误。
有什么办法解决这个问题吗?非常感谢大家!:)

GET工作正常。。。好的 POST返回405-不允许使用方法 这听起来像是在进行POST,而您要发布到的服务器不支持对相关端点的POST请求

您能提供更多信息吗?例如,发出GET请求时的HTTP请求和响应头,以及POST请求时的HTTP请求和响应头

您可以通过Firefox Firebug或Chrome控制台中的NET选项卡访问标题信息

  • 确保您的API方法已准备好处理POST请求。可能Angular实际上正在触发POST请求,但您的方法需要GET

  • 如果您确定Angular确实出于某种原因触发了GET请求而不是POST,请尝试显式地在$HTTP对象上设置HTTP方法:

    $http({
       method: 'POST',
       url: BASE_URL+"/leads/update/",
       data: lead_data
    }).then(function (response) {
       deferred.resolve(response.data);
    });
    

  • 这个问题似乎很老,还没有答案,但谷歌把我带到了这里。我希望有人会发现这个答案很有用

    我也有同样的问题$http设置为POST,但服务器从GET请求返回错误

    在web检查器中检查标题后,显示浏览器实际执行了两个请求:

    update/ 301     text/html   angular.js:11442        
    update  405     xhr         https://test.site/post/update
    
    第一个是来自$http的,第二个是在重定向之后。 正如您所看到的,尾部斜杠URL被重定向到非尾部斜杠URL。通过此重定向,POST请求也会更改为GET

    解决方案是将请求url更改为不包含尾部斜杠:

    url: BASE_URL+"/leads/update",
    

    你说当你做一件事的时候,每件事都很好。你说的
    post
    方法是做一个GET。但是你有一个405。我错过了一些东西。GET是否有效?抱歉,如果不清楚,mate,GET方法可以正常工作,当我尝试POST方法时,它不起作用,它仍然作为GET请求启动它,并从laravel返回405错误