CodeIgniter上带有ajax的403错误

时间:2018-05-26 09:44:09

标签: ajax codeigniter

我想在我的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但没有任何改变

3 个答案:

答案 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" },
    ]
} );