Spring MVC обнаруживает запрос ajax
Как определить AJAX-запрос наилучшим образом?
В настоящее время я использую это в моем контроллере:
private boolean isAjax(HttpServletRequest request){
String header = request.getHeader("x-requested-with");
if(header != null && header.equals("XMLHttpRequest"))
return true;
else
return false;
}
Но мне не нравится этот путь, я думаю, что должно быть лучшее решение с Spring.
2 ответа
Это единственный "универсальный" способ обнаружения Ajax-запроса.
Но имейте в виду: это не отказоустойчиво, это всего лишь попытка приложить максимум усилий, можно сделать запрос Ajax без отправки X-Requested-With
заголовки
jQuery обычно включает этот заголовок. Может быть, другая библиотека не делает. Протокол, конечно, не считает этот заголовок обязательным.
Просто примечание: ваш код совершенно корректен, хотя вы могли бы написать его немного проще:
private boolean isAjax(HttpServletRequest request) {
String requestedWithHeader = request.getHeader("X-Requested-With");
return "XMLHttpRequest".equals(requestedWithHeader);
}
Существует простое пуленепробиваемое решение. Просто отправьте параметр запроса, например, ajax=1, из вашего запроса ajax и отправьте другое значение или не отправляйте этот параметр для обычного запроса, проверьте свой контроллер и примите соответствующие меры.