Java 判断是否Ajax请求

判断是否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


原文出处:/show_1IX72EERV9ES.html