3

如何doFilter仅针对 Ajax 请求跳过执行?

截至目前,我正在传递名为isAjax. 有没有“标准”的方式来做到这一点?

在这种情况下,如何在过滤器中停止执行?添加return语句会是一种正确的方法吗?

4

2 回答 2

3

大多数浏览器在发送 AJAX 请求时都会添加一个特殊的请求头。您可以使用此代码段轻松检查:

public static boolean isAjaxRequest(HttpServletRequest request) {
    return "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
}

但是请注意,这不是完美的保证,因为此标头以 开头X-,它不是标准标头,浏览器/客户端代码可能决定不发送它。

于 2013-04-19T13:48:34.997 回答
0

您的过滤器在 web.xml 文件中声明,并且声明类似于:

<filter-mapping>
    <filter-name>NonAjaxServiceFiler</filter-name>
    <url-pattern>/non-ajax/*</url-pattern>
</filter-mapping>

因此,每个与“非 ajax”不匹配的查询都将被绕过

于 2013-04-19T13:50:14.207 回答