【问题标题】:Skip the servlet filter for ajax request跳过 ajax 请求的 servlet 过滤器
【发布时间】:2013-04-12 22:25:54
【问题描述】:

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

到目前为止,我正在传递名为 isAjax 的参数。有没有“标准”的方式来做到这一点?

在这种情况下如何停止过滤器中的执行?添加return 语句是否合适?

【问题讨论】:

标签: html ajax servlets servlet-filters


【解决方案1】:

大多数浏览器在发送 AJAX 请求时都会添加一个特殊的请求标头。您可以使用这个 sn-p 轻松检查:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 也许,那么他将不得不重新编写所有 Ajax URL ;)
    猜你喜欢
    • 2011-12-18
    • 2014-09-13
    • 2015-09-12
    • 1970-01-01
    • 2023-03-18
    • 2010-11-27
    • 2013-11-29
    • 1970-01-01
    • 2012-07-28
    相关资源
    最近更新 更多