ben*_*jah 3 javascript api http angularjs
我在角度和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;
}
}
Run Code Online (Sandbox Code Playgroud)
我从控制器调用此函数:
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);
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试将参数作为字符串传递("a = b&c = d ...")并添加标题:
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
Run Code Online (Sandbox Code Playgroud)
在run我的应用程序模块实例化的功能,但是,我不断收到405 (Method Not Allowed)错误.任何想法为什么以及如何解决它?非常感谢你们!:)
似乎问题是陈旧的,没有答案,但谷歌带领我在这里.我希望有人会觉得这个答案很有用.
我有同样的问题.$ http设置为POST但服务器从GET请求返回错误.
检查Web检查器中的标头后,它显示浏览器实际上执行了两个请求:
update/ 301 text/html angular.js:11442
update 405 xhr https://test.site/post/update
Run Code Online (Sandbox Code Playgroud)
第一个是$ http,第二个是重定向.如您所见,尾随斜杠URL被重定向到非尾随URL.通过此重定向,POST请求也会更改为GET.
解决方案是将您的请求URL更改为不包含尾部斜杠:
url: BASE_URL+"/leads/update",
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2309 次 |
| 最近记录: |