Javascript 使用datatables ajax url的Codeigniter CSRF保护

Javascript 使用datatables ajax url的Codeigniter CSRF保护,javascript,jquery,ajax,codeigniter,Javascript,Jquery,Ajax,Codeigniter,我正在使用codeigniter,我们已经启用了CSRF保护 $config['csrf_protection'] = TRUE; 我们使用了: `<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">` 显然,

我正在使用codeigniter,我们已经启用了CSRF保护

$config['csrf_protection'] = TRUE;
我们使用了:

`<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">` 
显然,这将显示“
不允许您请求的操作。
”消息


如何在Ajax检索数据时传递csrf?

在Ajax函数中将其作为头传递:

var handleDataTable = function () {

    var table = $('#my_table').DataTable({
      "ajax": {
          "url" : baseURL + "user/core/data/"+report_id,
          "dataType" : "json",
          "type" : "POST", // ajax source
          "headers": {
            'CSRFToken': TOKEN //replace by your name/value
          }
        },
});
如果有多个Ajax请求,则应为所有请求设置一个全局标头:

$.ajaxSetup( {
    headers: {
        'CSRFToken': TOKEN  //replace by your name/value
    }
});
或将名称/值对作为数据的一部分发送:

$('#myTable').DataTable( {
    ajax: {
        url: '...',
        data: function ( d ) {
            d.csrfName = csrfValue;
        }
    }
} );

谢谢您提供的信息,我已经在AJAX中添加了这个,但我不确定CodeIgniter是否会同时查找令牌名称和哈希?如果是的,我必须传递两个值作为令牌,我怎么能?我现在得到了解决方案,实际上config和js中的令牌名称是不同的,现在是相同的,解决了这个问题,谢谢,
$('#myTable').DataTable( {
    ajax: {
        url: '...',
        data: function ( d ) {
            d.csrfName = csrfValue;
        }
    }
} );