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 и отправьте другое значение или не отправляйте этот параметр для обычного запроса, проверьте свой контроллер и примите соответствующие меры.

Другие вопросы по тегам