У меня есть две страницы в одном проекте codeigniter 3 с контроллером и дочерним представлением каждая, но с использованием одного и того же шаблона.
Эти две страницы имеют идентичный контроллер и дочернее представление (только для тестирования, потому что в реальном случае у них действительно одинаковое поведение и код).
Страница 1: http://localhost/project-name/register-page1/form/
Страница 2: http://localhost/project-name/register-page2/form/
на странице 1, ajax с csrf_token () работает без проблема. но с тем же кодом на странице 2 он не работал и сказал 403 запрещен при доступе к методу из ajax запроса.
Я не знаю, почему мой код работает на странице 1, но не работает над page2 с ошибкой 403 запрещено. Пожалуйста, помогите мне ...
POST http://localhost/project-name/register-page2/getKabupatenByProvinceName 403 (Запрещено)
на config. php настройка
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_platform';
$config['csrf_cookie_name'] = 'csrf_cookie_platform';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();
страница-регистр1 и страница-регистр2 ajax контроллер
public function getKabupatenByProvinceName()
{
$province_name = $this->input->post('name', TRUE);
$province_data = $this->Province_model->getProvinceByName($province_name)->row();
$data = $this->Province_model->getRegencyByProvinceId($province_data->id)->result();
echo json_encode($data);
}
страница-регистр1 и register-page2 ajax запрос на просмотр
$('#provinsi').change(function() {
var csrfName = '<?php echo $this->security->get_csrf_token_name(); ?>';
var csrfHash = get_token();
$('#kabupaten_kota' + '_loading').html('<i class="fa fa-spinner fa-spin" style="font-size:16px"></i> Loading');
var name = $(this).val();
$.ajax({
url: window.location.origin + "/umi-pnm/register/getKabupatenByProvinceName",
method: "POST",
data: {
name: name,
[csrfName]: csrfHash
},
async: true,
dataType: 'json',
success: function(data) {
refill_token();
var html = '';
var i;
html += '<option value="" disabled selected>-- Pilih Kabupaten --</option>';
for (i = 0; i < data.length; i++) {
html += '<option value="' + toTitleCase(data[i].name) + '">' + toTitleCase(data[i].name) + '</option>';
}
$('#kabupaten_kota').html(html);
$('#kabupaten_kota' + '_loading').html('');
}
});
return false;
});
register-page1 и register-page2 ajax функции для получить и пополнить csrf_token
function get_token() {
var respon;
$.ajax({
type: 'GET',
async: false,
url: window.location.origin + "/umi-pnm/register/regenerate_csrf_token",
dataType: "html",
success: function(data) {
respon = data;
}
});
return respon;
}
function refill_token() {
var respon;
$.ajax({
type: 'GET',
async: false,
url: window.location.origin + "/umi-pnm/register/regenerate_csrf_token",
dataType: "html",
success: function(data) {
respon = data;
}
});
var els = document.getElementsByName('<?php echo $this->security->get_csrf_token_name(); ?>');
// console.log(els.length);
for (var i = 0; i < els.length; i++) {
els[i].value = respon;
}
}