Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung von Abfangbeispielen für Abfangjäger bei Ajax-Anfragen

Ausführliche Erläuterung von Abfangbeispielen für Abfangjäger bei Ajax-Anfragen

高洛峰
高洛峰Original
2017-03-28 14:39:083734Durchsuche

Lösen Sie das Abfangen von Ajax-Anfragen durch den Interceptor

Interceptor-Konfiguration:

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. Bestimmen Sie den String XRequested =request.getHeader("X-Requested-With " )-Wert, der Zweck besteht darin, festzustellen, ob es sich um eine Ajax-Anfrage handelt.

2. Response.getWriter().write("IsAjax"); Schreiben Sie Antwortdaten in Ajax, damit Sie in Ajax ein Urteil fällen können.

Es gibt zwei Möglichkeiten zur Beurteilung. Methode:

1) Urteilen Sie direkt in Ajax (nicht empfohlen)

success:function(data){
  if(data == "IsAjax"){
    window.location.href="m-web/user/toLogin"
    return;
  }
}

2) Ändern Sie den Ajax-Quellcode und komprimieren Sie ihn dann, wodurch er global geändert wird (empfohlen)

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;
         }
       }
     }

Danke fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Ausführlichere Beispiele für das Abfangen von Ajax-Anfragen durch Abfangjäger finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Verwandte Artikel:

Abfangen der globalen Ajax-Anforderungsinstanzanalyse durch JS

Verwenden Sie Mock.js, um AJAX in Node.js abzufangen Serverumgebung Angefordertes Tutorial

So prüfen Sie, ob es sich um eine Ajax-Anfrage über PHP handelt

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn