4

実際の使用例から始めましょう。

セッションの期限切れが原因で、サーバー側の認証フィルターが AJAX 要求をログイン ページにリダイレクトしようとすると、DWRが混乱します。いくつかのフィルターを追加して、

  1. HTTP ステータス コードが3xxに等しいリクエストは、 window.location = ...login.htmlのように、クライアント側のリダイレクトを実行します。
  2. ステータス コードが2xxに等しいリクエストは、変更されずに、DWR などの登録済みハンドラに転送されます。
  3. 4xxなどの他のコードは、深淵に消える代わりにアラートをトリガーする可能性があります。

このタイプの機能が役立つ理由を説明する必要はないでしょう。ほとんどのサーバー側 Web フレームワークは、クライアントでインターセプター パターンが必要な場合と同様の理由で、インターセプター パターンをサポートしています。

1 つの (おそらく悪い) 実装では、未加工の XMLHttpRequest オブジェクトを、いくつかのフィルター関数を受け入れるプロキシーにラップする必要があります。jQuery、Prototype、ExtJS などはすべて、ネイティブ ブラウザー AJAX オブジェクトを既にラップしているため、これは 1 つの追加ステップになる可能性があります。

これはネイティブに実装できますか? 技術的な課題は何ですか? このようなことは以前に行われたことがありますか?

4

1 に答える 1

0

jQuery環境でこれを部​​分的に達成するものを実装しました。jQuery AJAX 関数には、関数だけでなく、error関数もあります。したがって、返されたステータス コードに基づいてインターセプトしてリダイレクトするために、次のようなことを行うことができます。successcomplete

complete:
    function() {
        if (data.status == 301 ||
            data.status == 302 ||
            // etc.
        ) {  
            location.replace('error.html')
        } 

...等。「ネイティブ」ではありませんが、jQuery 内からは比較的クリーンです。

于 2011-01-24T17:04:53.620 に答える