Spec-Zone.ru › CodeIgniter 4

Запросы 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API