Я пытаюсь сделать вызов ajax, используя простой XMLHttpRequest() с помощью javascript XMLHttpRequest(), который имеет csrf и активирован регенерация. он работает только в том случае, если я собираю данные и токен из формы, иначе я получаю 403 (Запрещено). здесь не является JS:XMLHttpRequest() Запрос POST в codeigniter 3 403 (Запрещено) из-за защиты csrf
function test_ajax() {
var ajax = new XMLHttpRequest();
var data = {'csrf_test_name':csrfToken} ;
ajax.addEventListener("load", completeHandler, false);
ajax.addEventListener("error", errorHandler, false);
ajax.addEventListener("abort", abortHandler, false);
ajax.open("POST", base_url+'admin/test_ajax');
ajax.setRequestHeader('X-Requested-With', 'XMLHTTPRequest');
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
ajax.setRequestHeader('csrf_test_name', csrfToken);
ajax.responseType = "json";
ajax.send(data);
function completeHandler() {
console.log(event.target.response);
}
function errorHandler() {
}
function abortHandler() {
}
}
и вот контроллер в CodeIgniter:
class Admin extends CI_Controller{
public function __construct(){
parent::__construct();
$this->load->library('session');
$this->load->helper('url_helper');
$this->load->helper('security');
$this->load->helper('cookie');
}
public function test_ajax(){
$x = array('test1','test2');
echo json_encode($x);
//var_dump($x);
}
}
Так что я пытался добавить маркер в заголовке также в данных, подлежащих передаче, ни работы не даже с первого звонка. Я бы предпочел решение, чтобы оно работало, включив токен в данные и не в заголовке, если это возможно (в некоторых браузерах есть проблемы с настройками заголовков). Пожалуйста, нет jQuery решений, мне нужен этот, чтобы работать, используя простой javascript. Спасибо заранее.