繁体   English   中英

使用数据表Ajax URL的Codeigniter CSRF保护

[英]Codeigniter CSRF protection with datatables ajax url

我正在使用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(); ?>">` 

在表单提交及其正常工作中,

但是我的应用程序还使用DataTables通过AJAX获取服务器数据,

var handleDataTable = function () {
    var table = $('#my_table').DataTable({
      "ajax": {
          "url" : baseURL + "user/core/data/"+report_id,
          "dataType" : "json",
          "type" : "POST", // ajax source
        },
    });
}

显然,这将显示“ The action you have requested is not allowed. ”消息,

如何在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;
        }
    }
} );

资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM