Ajax 使用Angular.js$http.post和启用CSRF的Codeigniter

Ajax 使用Angular.js$http.post和启用CSRF的Codeigniter,ajax,codeigniter,angularjs,csrf,Ajax,Codeigniter,Angularjs,Csrf,我正试图通过Angular.js发布到一个启用了CSRF(在同一个域上)的应用程序中的CodeIgniter控制器。使用jquery,我只需添加如下标记: $.ajaxSetup({ data: { csrf_token: $("input:hidden[name='csrf_token']").val() } 我在Angular.js中添加了post值和标题,但没有乐趣。有人知道如何做到这一点吗 var postData = { name:"csrf_token", value: $

我正试图通过Angular.js发布到一个启用了CSRF(在同一个域上)的应用程序中的CodeIgniter控制器。使用jquery,我只需添加如下标记:

$.ajaxSetup({
data: {
    csrf_token: $("input:hidden[name='csrf_token']").val()
}
我在Angular.js中添加了post值和标题,但没有乐趣。有人知道如何做到这一点吗

var postData = { name:"csrf_token", value: $("input:hidden[name='csrf_token]").val() };
$http.post('myCIcontroller',postData,{headers: {'csrf_token': $("input:hidden[name='csrf_token']").val()}}).success(function(data){
                console.log(data);
            });
尝试:

这与jqueryajax调用基本相同。您可能还想去掉
$http.post()

中的
标题,这里有一个解决方案:

var postData = $.param({csrf_token: $("input:hidden[name='csrf_token']").val()});

$http.post('myCIcontroller', postData, {headers : {'Content-Type': 'application/x-www-form-urlencoded'}}).success(function(data){
            console.log(data);
});
更多信息请点击此处:

谢谢你的建议。这使得post看起来像:{“csrf_令牌”:“839e01fd6186fd839f5ff70f995c0f5f”},但它需要看起来像:csrf_令牌=c30c272623b8c02b7c938d81dfb00862。我尝试设置标题:{'Content-Type':'application/x-www-form-urlencoded'},但仍然没有乐趣。@user2011685如果您将
$.ajax()
配置为进行POST调用,则
数据也会转换为请求正文,而不是查询字符串。
var postData = $.param({csrf_token: $("input:hidden[name='csrf_token']").val()});

$http.post('myCIcontroller', postData, {headers : {'Content-Type': 'application/x-www-form-urlencoded'}}).success(function(data){
            console.log(data);
});