Я пишу свою собственную среду 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 и попытайтесь разобрать.