Javascript 使用datatables ajax url的Codeigniter CSRF保护
我正在使用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(); ?>">` 显然,
$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;
}
}
} );