Ajax はユーザー セッションの失敗を処理します

php中世界最好的语言
リリース: 2018-04-19 11:47:09
オリジナル
1907 人が閲覧しました

今回は、Ajaxによるユーザーセッション障害の処理について説明します。以下は実際のケースです。

spingMVC インターセプターを使用してユーザーのセッションの失敗の問題を処理する場合、ユーザーのセッションが失敗すると、javascript 文字列の文字列が返され、ユーザーのブラウザが強制的にログインページにジャンプします。ただし、Ajax を使用してデータをリクエストすると、検証が失敗した後は文字列のみが応答され、JavaScript は実行されません。これは、Ajax リクエストがブラウザではなく XMLHTTPRequest オブジェクトによって開始されるためです。サーバーが返します。情報は XMLHTTPRequest オブジェクトによって受信され、js オブジェクトに保存されます。

この状況に対処するために、HTTP リクエストを最初にバックグラウンドで判断し、Ajax リクエストを通常の http リクエストとは別に処理することができます。
Ajax から送信されるリクエストのヘッダー情報を観察すると、Ajax リクエストのヘッダー情報に X-Requested-With:XMLHttpRequest が含まれていることがわかり、これにより Ajax リクエストであるかどうかを判断できます。

String requestType = request.getHeader("X-Requested-With");
if(requestType !=null&&"XMLHttpRequest".equalsIgnoreCase(requestType.trim())) {
  //如果是ajax请求
  response.setHeader("sessionStatus","timeout");
  response.sendError(601,"session timeout.");
  returnfalse;
}
ログイン後にコピー

JavaScript コードは、Ajax リクエストのグローバルなデフォルト オプションを設定できます

//设置Ajax请求的全局默认options
jQuery.ajaxSetup({
  type:'post',
  complete:function(xhr, ts){//XMLHttpRequest, textStatus
    varsessionStatus = xhr.getResponseHeader('sessionstatus');
    if(sessionStatus =='timeout') {
      alert('页面过期,请重新登录!');
      window.top.location.href ='Login.htm'
    }
  }
});
ログイン後にコピー

DataTables は、データ テーブルを作成するためにプロジェクトでも使用されます 上記の JavaScript 構成メソッドはデータテーブルでは有効ではないことがわかりました。エラー メッセージ参照: http://datatables.net/tn/7 Ajax のエラー属性を設定する必要があります

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、こちらをご覧ください。 PHP 中国語 Web サイトの他の関連記事にも注目してください。

推奨読書:

JS はチェスボード カバレッジを実装します

js での寄生結合継承の使用の詳細な説明

以上がAjax はユーザー セッションの失敗を処理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート