JS Ajax要求セッションの期限切れの問題解決方法の分析


本論文の例は、JS Ajaxがセッションの期限切れを要求する問題解決方法を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
ページにとって、sessionの期限が切れているのは比較的に簡単で、普通はフィルタの中でsessionのユーザーが存在するかどうかを判断するのでさえすれば、存在しないならばページにジャンプして登録ページに行けばいいです。
Ajax要求に対しては、この方法は無効で、登録ページのhtmlコードしか取得できません。なぜなら、Ajax要求は、ブラウザではなくXMLHTTPRequestオブジェクトから開始され、サーバから返された情報の受信者もXMLHTTPRequestであり、ブラウザではないからである。
解決策:
サーバ端
リターンResponseHeaderにJavascriptで処理するために識別変数を追加することができます。Javaを例にとって、フィルタ内で以下のように処理することができる。

try {
  // Ajax        
  String requestType = request.getHeader("X-Requested-With");
  if (StringUtils.isNotEmpty(requestType) && requestType.equalsIgnoreCase("XMLHttpRequest")) {
    response.setHeader("SessionStatus", "sessionTimeOut");
    requestContext.abortWith(Response.status(401).build());
    return;
  }
  //       
  requestContext.abortWith(Response.accepted().build());
  response.sendRedirect(loginPath);
} catch (IOException ex) {
  //do nothing
}

Javascript端
JQueryのajaxComplete方法で処理できます。要求を送信する時にセッションが満了したかどうかを判断します。

/**
 * ajax           
 */
$(document).ajaxError(function (event, jqXHR, options, errorMsg) {
  var sessionStatus = jqXHR.getResponseHeader('SessionStatus');
  if (sessionStatus && sessionStatus === 'sessionTimeOut') {
    alert("       ,     ");
    location.href = "login";
  }
});

もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「JavaScriptのajax操作技術のまとめ」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」および「JavaScript数学演算の使い方のまとめ
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。