Различие между вызовом AJAX / запросом браузера
-
03-07-2019 - |
Вопрос
Есть ли в заголовке HTTP-запроса что-нибудь, что позволило бы мне различать вызов AJAX и прямой запрос браузера от данного клиента? Строки пользовательского агента обычно одинаковы независимо?
Решение
Если вы используете Prototype, jQuery, Mootools или YUI, вы должны найти заголовок X-Requested-With: XMLHttpRequest , который поможет вам. Должна быть возможность вставить любой заголовок, который вам нравится, с другими библиотеками.
На самом низком уровне, учитывая объект XMLHttpRequest или XMLHTTP, этот заголовок можно установить с помощью setRequestHeader следующим образом:
xmlHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
Другие советы
После некоторых исследований кажется, что наилучшим подходом было бы просто указать пользовательскую строку пользовательского агента при выполнении вызовов AJAX и затем проверить эту пользовательскую строку пользовательского агента на сервере.