拦截器的 preHandle 方法也会处理 ajax 调用吗?

Will preHandle method of Interceptor handle ajax calls also?

我已经编写了一个 preHandle 方法来检查 URL 是否有令牌,它工作正常。

但是 ajax 调用同样有效吗?

 public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response,final Object handler) throws Exception {
            String requesttoken = request.getParameter("token");
            if (requesttoken != null && validatetoken(requesttoken)) {
                return true;
            } else {
                response.sendRedirect("/404.html");
                return false;
            }
        }

是的,只要模式匹配,拦截器就会对 ajax 调用起作用。查看 this SO 答案。

如果您想排除 ajax 次调用,您可以排除以下模式:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/ajax/**");
    }

}