Ajax 요청에 대한 인터셉터의 차단 예에 대한 자세한 설명

高洛峰
풀어 주다: 2017-03-28 14:39:08
원래의
3751명이 탐색했습니다.

인터셉터에 의한 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. 문자열 XRequested =request.getHeader("X-Requested-With " ) 값을 사용하여 Ajax 요청인지 확인하는 것이 목적입니다.

2. response.getWriter().write("IsAjax"); 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 요청을 가로채는 자세한 예는 PHP 중국어 웹사이트의 관련 기사를 참고하세요!

관련 기사:

JS를 통한 전역 Ajax 요청 인스턴스 분석 가로채기

Mock.js를 사용하여 Node.js에서 AJAX 가로채기 서버 환경 요청 튜토리얼

php를 통해 ajax 요청인지 확인하는 방법

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿