Обнаружение запроса ajax

Я пишу свою собственную среду MVC для практики, и у меня есть класс Request. Я хотел бы получить тип запроса и проанализировать данные соответственно, будь то вызов AJAX / JSON или запрос HTML / XML.

В настоящее время я использую:

$_SERVER['HTTP_ACCEPT'] 

и выше при использовании var_dump на нем возвращает application / json для этого:

 $.ajax({ type: 'post', url: 'index', dataType: 'json', data: { _method: 'put' } }); 

var_dump ($ _ SERVER ['HTTP_ACCEPT']) возвращает:

 string(46) "application/json, text/javascript, */*; q=0.01" 

Вопрос: этот метод надежный? Всегда ли это работает? Существуют ли какие-либо проблемы с безопасностью при обнаружении вызова ajax?

Обратите внимание, что все мои вызовы ajax в моей структуре должны иметь dataType: «json», если у него нет другого типа вызова, такого как HTML или XML .

Используя jQuery, вы можете использовать $_SERVER['HTTP_X_REQUESTED_WITH'] который будет установлен на «XMLHttpRequest». Это самый надежный метод при использовании jQuery.

Колин Морелли ответил на ваш главный вопрос, но это должно помочь вам в ваших последующих действиях.

XMLHttpRequest означает его вызов ajax? Как я могу определить тип, если его XML или JSON

Да. XMLHttpRequest – это объект JavaScript, который делает запрос. Сейчас это плохо названо, потому что вы можете отправить его всем, что хотите. Чтобы ответить на ваш второй вопрос, вам придется выполнить какую-то попытку разбора на получаемой вами полезной нагрузке. Вы можете сканировать для XML и, если не найти, просто предположите, что это JSON и попытайтесь разобрать.