如何doFilter
仅针对 Ajax 请求跳过执行?
截至目前,我正在传递名为isAjax
. 有没有“标准”的方式来做到这一点?
在这种情况下,如何在过滤器中停止执行?添加return
语句会是一种正确的方法吗?
如何doFilter
仅针对 Ajax 请求跳过执行?
截至目前,我正在传递名为isAjax
. 有没有“标准”的方式来做到这一点?
在这种情况下,如何在过滤器中停止执行?添加return
语句会是一种正确的方法吗?
大多数浏览器在发送 AJAX 请求时都会添加一个特殊的请求头。您可以使用此代码段轻松检查:
public static boolean isAjaxRequest(HttpServletRequest request) {
return "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
}
但是请注意,这不是完美的保证,因为此标头以 开头X-
,它不是标准标头,浏览器/客户端代码可能决定不发送它。
您的过滤器在 web.xml 文件中声明,并且声明类似于:
<filter-mapping>
<filter-name>NonAjaxServiceFiler</filter-name>
<url-pattern>/non-ajax/*</url-pattern>
</filter-mapping>
因此,每个与“非 ajax”不匹配的查询都将被绕过