判断是否ajax请求 目录
原理
https://www.malaoshi.top/show_1IX72EY3DLiv.html
Java 代码
package top.malaoshi.web.utils;
import javax.servlet.http.HttpServletRequest;
public class Ajax {
/**
* 判断是否ajax请求
* @param request
* @return
*/
public static boolean isAjax(HttpServletRequest request){
/*
从请求头中取出accept,如果是 application/json 就说明是ajax
普通请求是 text/html
注意:
- 不跨域时,jquery、axios发请求,会携带该请求头,用下面代码可判断
- 跨域时,axios发请求,accept头的值是 *//*,所以需要指定accept头,否则用下面代码无法判断
*/
String accept = request.getHeader("accept");
if (accept != null && accept.contains("application/json")){
return true;
}
/*
ajax请求,会携带 x-requested-with 头,该头的值是 XMLHttpRequest
注意:
- 跨域时,服务器默认不允许携带该请求头,所以jquery、axios不会发该请求头,需要前端加该请求头,后端也需要允许跨域携带该请求头
- 不跨域时,有的js框架,发请求时默认不发该请求头,如:axios,所以需要指定携带该请求头,否则用下面代码无法判断是否ajax
*/
String xRequestedWith=request.getHeader("x-requested-with");
if(xRequestedWith!=null && "XMLHttpRequest".equalsIgnoreCase(xRequestedWith)){
return true;
}
return false;
}
}
参考:
https://juejin.cn/post/6875290206929584142