Как request :: is_ajax () работает в Kohana? - PullRequest
4 голосов
/ 11 июля 2009

Как Kohana определяет, является ли запрос AJAX?

Есть ли что-то другое в строке реферера? Нужно ли добавлять параметр GET, возможно ?ajax=true?

Ответы [ 3 ]

8 голосов
/ 11 июля 2009

Он проверяет, сделан ли запрос XMLHttpRequest, так как большинство браузеров в этом случае отправляют заголовок с таким указанием: заголовок HTTP_X_REQUESTED_WITH будет установлен на XMLHttpRequest.

5 голосов
/ 17 августа 2009

Начиная с версии 2.3.4

/**
 * Tests if the current request is an AJAX request by checking the 
 * X-Requested-With HTTP request header that most popular JS frameworks 
 * now set for AJAX calls.
 *
 * @return  boolean
 */

public static function is_ajax()
{
  return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND 
          strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
}
1 голос
/ 25 октября 2013

Necro-posting, потому что это появилось первым в моем поиске в Google.

Не знаю, если Kohana все еще работает таким образом, но использование HTTP_X_REQUESTED_WITH больше не является лучшей практикой.

Ajax-запросы - фактически все HTTP-запросы - должны отправлять заголовок «Accept».

Любой процесс на стороне сервера должен проверить заголовок «Принять», чтобы определить, какой контент отправлять в ответ. Один из способов сделать это в PHP:

  function is_ajax() {
    return $_SERVER['HTTP_ACCEPT'] == 'application/json';
  }
...