Запросы AJAX
Метод IncomingRequest::isAJAX() использует заголовок X-Requested-With для определения, является ли запрос XHR или обычным. Однако, в последних реализациях JavaScript (например, fetch) этот заголовок больше не отправляется вместе с запросом, что делает использование IncomingRequest::isAJAX() менее надёжным, так как без этого заголовка невозможно определить, является ли запрос XHR.
Чтобы решить эту проблему, наиболее эффективное решение (на данный момент) — это вручную определить заголовок запроса, заставляя передавать эту информацию на сервер, который сможет определить, что запрос является XHR.
Вот как заставить отправить заголовок X-Requested-With в Fetch API и других JavaScript библиотеках.
Fetch API
fetch(url, {
method: "get",
headers: {
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
}
});
jQuery
Для библиотек, таких как jQuery, например, нет необходимости явно отправлять этот заголовок, так как, согласно официальной документации, это стандартный заголовок для всех запросов $.ajax(). Но если вы всё же хотите гарантировать отправку, не рискуя, просто сделайте это следующим образом:
$.ajax({
url: "your url",
headers: {'X-Requested-With': 'XMLHttpRequest'}
});
VueJS
В VueJS вам нужно добавить следующий код в функцию created, если вы используете Axios для этого типа запроса.
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
React
axios.get("your url", {headers: {'Content-Type': 'application/json'}})
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/general/ajax.html