Ajaxリクエストにおけるインターセプターのインターセプト例を詳しく解説

高洛峰
リリース: 2017-03-28 14:39:08
オリジナル
3693 人が閲覧しました

インターセプターによる 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. String XRequested =request.getHeader("X-Requested-With") の値を調べて、それが Ajax リクエストであるかどうかを判断します。

2. response.getWriter().write("IsAjax"); ajaxで判定できるようにレスポンスデータを書き込む

判定方法は2つあります

1) Make判定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 中国語 Web サイトの関連記事に注目してください。

関連記事:

JSによるグローバルAjaxリクエストインスタンス分析のインターセプト

Mock.jsを使用してNode.jsサーバー環境でAJAXリクエストをインターセプトするチュートリアル

Ajaxリクエストかどうかを確認する方法php

を通して
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!