0

Ajax リクエストをサーバー側のログイン ページにリダイレクトしたい。

リクエストがAjaxリクエストかどうかは、

boolean isAjaxRequest = "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));

JavaScriptでできることは知っていますが、サーバーにajaxリクエストを送信する場所がたくさんあります。だから私はサーバー側でそれをしなければなりません。私は試した;

httpResponse.redirect("...");

しかし、それは機能しません。

どうやってやるの?ありがとう。

4

3 に答える 3

4

短い答え:いいえ。

長い答え: それは可能ですが、あなたが考えている方法ではありません. ログイン ページへのリダイレクトが必要な場合は、おそらくユーザーが現在認証されていないことを意味します。401 応答を返します。これは、ログインが必要であることをクライアントに示します。

ここでの秘訣は、各呼び出しで 401 を処理するのではなく、グローバル ポイントで処理することです。たとえば、jQuery を使用している場合は、グローバル エラー ハンドラーを登録してステータス コードを確認できます。ステータス コードが 401 の場合は、ログイン ページにリダイレクトするか、認証データを受け入れます。

于 2015-11-04T08:40:11.957 に答える
2

サーバー側でこれを行うことはできません。送信するものは常に AJAX 応答であり、ページ全体/ブラウザー タブ (AJAX 要求だけでなく) をログイン ページにリダイレクトする必要があるためです。

唯一の方法は、AJAX ハンドラーのクライアント側でこれを行うことです。フラグ (エラー ステータス コードなど) を送信し、それを Javascript で処理して、ブラウザー タブ全体をログイン ページにリダイレクトします。

于 2015-11-04T08:49:56.593 に答える