Necro-posting, потому что это появилось первым в моем поиске в Google.
Не знаю, если Kohana все еще работает таким образом, но использование HTTP_X_REQUESTED_WITH больше не является лучшей практикой.
Ajax-запросы - фактически все HTTP-запросы - должны отправлять заголовок «Accept».
Любой процесс на стороне сервера должен проверить заголовок «Принять», чтобы определить, какой контент отправлять в ответ. Один из способов сделать это в PHP:
function is_ajax() {
return $_SERVER['HTTP_ACCEPT'] == 'application/json';
}