我想在我的CodeIgniter应用程序上使用Ajax(使用JQuery插件Datatables),当我输入控制器的地址时,我有403错误。 我使用3.1.8版本的Codeigniter。 我的代码:
$('#Table').DataTable( {
"processing": true,
"serverSide": true,
ajax: {
url: '<?= base_url('myController/data');?>',
"type": "POST"
},
"columns": [
{ "data": "col1" },
{ "data": "col2" },
{ "data": "col3" },
]
} );
我试图将$ config ['csrf_regenerate']设为false但没有任何改变
答案 0 :(得分:0)
你的网址看起来像是:
url: "<?= base_url('myController/data');?>",
答案 1 :(得分:0)
"url": base_url + 'myController/data',
尝试将此作为您的网址,在myController中回显,看看您是否要访问该网址。
我希望您已获准访问该路径。
答案 2 :(得分:0)
您还需要一个csrf令牌与您的ajax数据一起传递。没有它你会得到403错误。由于$ config ['csrf_regenerate']在您的配置中为false,因此您只需获取一次令牌值,并在所有请求中使用它。
使用以下函数获取令牌名称并获取其值。
$this->security->get_csrf_token_name();
$this->security->get_csrf_hash();
在您的控制器方法中,您可以使用以下方法设置$data['csrf_token_name']
和$data['csrf_token_hash']
的值,以便在下面的视图代码中使用。
$('#Table').DataTable( {
"processing": true,
"serverSide": true,
ajax: {
url: '<?= site_url('myController/data');?>',
"type": "POST",
data: { '<?php echo $csrf_token_name; ?>' : '<?php echo $csrf_token_hash; ?>' }
},
"columns": [
{ "data": "col1" },
{ "data": "col2" },
{ "data": "col3" },
]
} );