项目开发的过程中遇到一个问题, 需要Interceptor中区分当前请求是否为ajax 异步请求. 参照网上的资料, ajax 异步请求的头部信息通过F12 可以看到多了一个参数x-requested-with XMLHttpRequest,而普通的请求是没有这个.因此在后台可以如下区分一个请求是否为ajax了.
String xReq = request.getHeader("x-requested-with");
if (StringUtils.isNotBlank(xReq) && "XMLHttpRequest".equalsIgnoreCase(xReq)) {
// 是ajax异步请求
}
在struts2 Interceptor中通过判断也是这样处理
// 需要区分请求是否为ajax请求
ActionContext ctx = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
String xReq = request.getHeader("x-requested-with");
if (StringUtils.isNotBlank(xReq) && "XMLHttpRequest".equalsIgnoreCase(xReq)) {
// 是ajax异步请求
result = invocation.invoke();
return result;
}