解决拦截器对ajax请求的拦截实例详解

解决拦截器对ajax请求" title="ajax请求">ajax请求的的拦截

拦截器配置:

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object obj) throws Exception {

//获取判定登陆的session是否存在

String token = (String) request.getSession().getAttribute("token");

String postId = (String) request.getSession().getAttribute("postId");

if(token == null || token == ""){

String XRequested =request.getHeader("X-Requested-With");

if("XMLHttpRequest".equals(XRequested)){

response.getWriter().write("IsAjax");

}else{

response.sendRedirect("/m-web/user/toLogin");

}

return false;

}

if(postId == null || postId == ""){

String XRequested =request.getHeader("X-Requested-With");

if("XMLHttpRequest".equals(XRequested)){

response.getWriter().write("IsAjax");

}else{

response.sendRedirect("/m-web/user/toLogin");

}

return false;

}

return true;

}

1、判断 String XRequested =request.getHeader("X-Requested-With") 的值,目的是判断是否是ajax请求。

2、response.getWriter().write("IsAjax");写出一个响应的数据给ajax,这样就可以在ajax里面做判断

  判断的方式存在两种方式:

  1)直接在ajax里面做判断(不建议)

success:function(data){

if(data == "IsAjax"){

window.location.href="m-web/user/toLogin"

return;

}

}

  2)改ajax源码然后在做压缩,是针对全局的方式来修改的(建议)

 if ( isSuccess ) {// if no content

if ( status === 204 || s.type === "HEAD" ) {

statusText = "nocontent";

// if not modified

} else if ( status === 304 ) {

statusText = "notmodified";

// If we have data, let's convert it

} else {

statusText = response.state;

success = response.data;

error = response.error;

isSuccess = !error;

//解决ajax拦截问题

var result = responses.text;

if(result.indexOf("IsAjax")>=0){

window.location.href="m-web/user/toLogin";

return;

}

}

}

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上是 解决拦截器对ajax请求的拦截实例详解 的全部内容, 来源链接: utcz.com/z/344878.html

回到顶部