今回は、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 サイトの他の関連記事にも注目してください。 推奨読書:以上がAjax はユーザー セッションの失敗を処理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。