Как отправить форму в ajax после установки защиты CSRF TRUE в codeigniter? - PullRequest
0 голосов
/ 03 августа 2020

Я отправляю форму, используя ajax с включением защиты CSRF в значение true в config. php. В первый раз форма отправляется правильно, но во второй раз отображается ошибка «Запрещено. Запрошенное действие не разрешено. 403». Как я могу безопасно отправить форму, используя ajax, включив защиту CSRF в значение true. Ниже приведена функция ajax, которую я использую.

$('#loginfrmbtn').on('click', function(){
  $(this).prop('disabled', true);
  var formdata=$('#loginfrm').serialize();
  $.ajax({
    type: 'POST',
    data: formdata,
    url: '<?php echo base_url('logincheck');?>',
    dataType: 'json',
    success: function(res){
      $('#loginfrmbtn').prop('disabled', false);
      console.log(res);
      
    }, error: function(jqXHR){
      console.log(jqXHR);
    }
  })
})

1 Ответ

0 голосов
/ 03 августа 2020

Попробуйте использовать параметр заголовков функции jQuery ajax (https://api.jquery.com/jquery.ajax/), чтобы отправить токен csrf в каждом запросе, например:

$.ajax({
    ...
    headers:{
        'X-CSRF-TOKEN': $( 'input[id="csrf_tsecurity"]' ).val(),
    },
    ...
});

И следующая конфигурация codeigniter:

public $CSRFTokenName  = 'csrf_tsecurity';
public $CSRFHeaderName = 'X-CSRF-TOKEN';
public $CSRFRegenerate = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...