比较规范的ajax,比如 jquery 都会携带一个请求头:
x-requested-with
所以判断请求头是否存在即可。
if (request.getHeader("x-requested-with") != null
&& request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
out.print("该请求是 AJAX 异步HTTP请求。");
}else{
out.print("该请求是传统的 同步HTTP请求。");
}
如果为 ajax,但可能没有该请求头。因为它并不是规范字段。
以axios为例,就是在代码中封装的:
拦截request,设置全局请求为ajax请求 axios.interceptors.request.use((config) => { config.headers[‘X-Requested-With’] = ‘XMLHttpRequest’ return config })
附 php 判断 ajax 代码:
!defined("requestHeader") && define("requestHeader",getallheaders()); // 取得所有请求头
/**
* 判断是否为ajax请求
*/
function isAjax(){
if(requestHeader['X-Requested-With']){ // 判断是否存在ajax请求头
return true;
}else{
return false;
}
}
!defined("IsAjax") && define("IsAjax",isAjax());