Spring MVC检测ajax请求

时间:2015-05-26 14:45:11

标签: ajax spring spring-mvc

如何以最佳方式检测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 个答案:

答案 0 :(得分:12)

这是唯一的"泛型"检测Ajax请求的方法。

但请记住:这不是故障保护,只是尽力而为尝试,可以在不发送X-Requested-With的情况下发出Ajax请求头

jQuery通常包含该标头。也许另一个lib没有。该协议当然不会认为该标题是强制性的。

请注意:您的代码完全有效,但您可以更简单地编写代码:

private boolean isAjax(HttpServletRequest request) {
    String requestedWithHeader = request.getHeader("X-Requested-With");
    return "XMLHttpRequest".equals(requestedWithHeader);
}

答案 1 :(得分:0)

有一个简单的防弹解决方案。只需从ajax请求中发送ajax = 1等查询参数,然后发送不同的值,或者不要将此参数发送给常规请求,并检查控制器并采取相应措施。