Ошибка 403 с ajax на CodeIgniter - PullRequest
0 голосов
/ 26 мая 2018

Я хочу использовать Ajax (с плагином JQuery Datatables) в моем приложении CodeIgniter, и когда я помещаю адрес контроллера, у меня появляется ошибка 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 голосов
/ 26 мая 2018
"url": base_url + 'myController/data',

попробуйте это в качестве URL-адреса, откройте эхо в myController, чтобы увидеть, переходите ли вы на URL-адрес или нет.

Надеюсь, у вас есть разрешение на доступ к этому пути.

0 голосов
/ 26 мая 2018

Вам также нужен токен 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" },
    ]
} );
0 голосов
/ 26 мая 2018

Ваш URL должен выглядеть так:

url: "<?= base_url('myController/data');?>",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...