如何以最佳方式检测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应该有更好的解决方案。
答案 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等查询参数,然后发送不同的值,或者不要将此参数发送给常规请求,并检查控制器并采取相应措施。