在codeigniter中启用csrf的情况下使用ajax时出现403禁止的错误

在codeigniter中启用csrf的情况下使用ajax时出现403禁止的错误,ajax,codeigniter,Ajax,Codeigniter,我正在使用启用csrf的codeigniter。我提出了一些ajax post请求,但不知何故我得到了403 post禁止错误。我的文件夹结构是这样的,我包含了这个js,其中ajax代码是在应用程序文件夹之外编写的。我用于ajax请求的代码是 var data = { name: $('.name').val(), crm_csrf_token: $('input[name="crm_csrf_token"]').val() } var url = 'http://demo/s

我正在使用启用csrf的codeigniter。我提出了一些ajax post请求,但不知何故我得到了403 post禁止错误。我的文件夹结构是这样的,我包含了这个js,其中ajax代码是在应用程序文件夹之外编写的。我用于ajax请求的代码是

var data = {
    name: $('.name').val(),
    crm_csrf_token: $('input[name="crm_csrf_token"]').val()
} 
var url = 'http://demo/signup/signup';
$.ajax({
    url: url,
    dataType: 'json',
    type: 'post',
    contentType: 'application/json',
    data: data,
    success: function( data, textStatus, jQxhr ){
        console.log(data);
        console.log(textStatus);
        console.log(jQxhr);
    },
    error: function( jqXhr, textStatus, errorThrown ){
        console.log(jqXhr);
        console.log(textStatus);
        console.log(errorThrown);
    }
});

那么我错在哪里呢。在进行这个ajax调用之前,我也在使用javascript验证表单。站点url()和基本url在应用程序forlder之外也不可访问。

试试这个,我想你的url有问题。在这里,我纠正这一点,可能是你的工作

JQuery

var data = {
    name: $('.name').val(),
    crm_csrf_token: $('input[name="crm_csrf_token"]').val()
}

//Url should be index.php/YourControllerName/YourMethodName
var url = '<?php echo base_url(); ?>index.php/demo/signup';
$.ajax({
    url: url,
    dataType: 'json',
    type: 'post',
    contentType: 'application/json',
    data: data,
    success: function( data, textStatus, jQxhr ){
        console.log(data);
        console.log(textStatus);
        console.log(jQxhr);
    },
    error: function( jqXhr, textStatus, errorThrown ){
        console.log(jqXhr);
        console.log(textStatus);
        console.log(errorThrown);
    }
});
var数据={
名称:$('.name').val(),
crm_csrf_令牌:$('input[name=“crm_csrf_令牌”]”)。val()
}
//Url应该是index.php/YourControllerName/YourMethodName
var url='index.php/demo/signup';
$.ajax({
url:url,
数据类型:“json”,
键入:“post”,
contentType:'应用程序/json',
数据:数据,
成功:函数(数据、文本状态、jQxhr){
控制台日志(数据);
console.log(textStatus);
console.log(jQxhr);
},
错误:函数(jqXhr、textStatus、errorshown){
console.log(jqXhr);
console.log(textStatus);
console.log(错误抛出);
}
});
CI控制器:

<?php

class demo extends CI_Controller {
    public function signup()
    {
            echo 'Hello World!';
    }
}

您只需要使用jquery cookie发送csrf令牌,您可以从这里下载它

现在在您的ajax调用中

$.ajax({

url:url,
数据:{
“”:Cookies.get('your\u csrf\u cookie\u name\u in\u config')
},
方法:“张贴”,
成功:功能(数据){
$(“#城市”).html(数据);
}

}))

删除此处的中间引号:`var url='';。更正了url,但这并不能解决问题。
url:url,
data:{
   "<?php echo $this->security->get_csrf_token_name(); ?>": Cookies.get('your_csrf_cookie_name_in_config')
    },
method :"POST",
success:function(data){
 $("#city").html(data);
}