1、通过http请求头中的X-Requested-With字段,判断请求的方式是否为ajax请求,
public static boolean isAjaxRequest(HttpServletRequest request) {
String header = request.getHeader("X-Requested-With");
return header != null && "XMLHttpRequest".equals(header);
}
2、传统请求和ajax请求的抓包对比分析如下:
两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数
传统同步请求参数
accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-charset gb2312,utf-8;q=0.7,*;q=0.7
accept-encoding gzip,deflate
accept-language zh-cn,zh;q=0.5
cache-control max-age=0
connection keep-alive
cookie JSESSIONID=1A3BED3F593EA9747C9FDA16D309AF6B
keep-alive 300
Ajax 异步请求方式
accept */*
accept-language zh-cn
x-requested-with XMLHttpRequest
content-type application/x-www-form-urlencoded,text/javascript
accept-encoding gzip, deflate
user-agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0;
content-length 233
connection Keep-Alive
cache-control no-cache
cookie CSS=undefined; JSESSIONID=1B9AC25036290F7FB6823CCE1A24E541
可以看到 Ajax 请求多了个 x-requested-with ,可以利用它,request.getHeader("x-requested-with"); 为 null,则为传统同步请求,为 XMLHttpRequest,则为 Ajax 异步请求。
判断请求是否为Ajax请求
猜你喜欢
转载自pinghuqiuyue.iteye.com/blog/2377602
今日推荐
周排行