使用带有Codeigniter的Angular.js $ http.post启用CSRF

时间:2013-06-10 18:42:19

标签: ajax codeigniter angularjs csrf

我正在尝试通过Angular.js发布到启用了CSRF的应用程序中的CodeIgniter控制器(在同一个域上)。使用jquery,我会像这样添加令牌:

$.ajaxSetup({
data: {
    csrf_token: $("input:hidden[name='csrf_token']").val()
}

我在Angular.js中添加了帖子值和标题,但没有快乐。有人知道如何做到这一点吗?

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);
            });

2 个答案:

答案 0 :(得分:4)

这是一个解决方案:

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);
});

更多信息: How can I post data as form data instead of a request payload?

答案 1 :(得分:0)

尝试:

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

这基本上和你的jquery ajax调用一样。您可能还想摆脱headers中的$http.post()