0

2 番目のブラウザー ウィンドウを開く GWT アプリケーションがあります。2 番目のウィンドウが最初のウィンドウのエントリ ポイント内でメソッドを呼び出せるようにしたいと考えています。

以下のコード サンプルは運用 (Web) モードで動作しますが、ホスト モードで実行しようとすると、IE は XSS を検出し、検出された攻撃から保護するために単一の「#」でページを上書きします。これは、テストしているアプリケーションが仮想マシンにデプロイされているときに、GWT コード サーバーが localhost で実行されているためだと思います。

更新: IE XSS フィルタリングは散発的であるようです。時々、ページをロードできることがあります。しかし、しばらくすると、再びフィルタリングが開始されます。

public class MainWindow implements EntryPoint {
    ...
    @Override
    public void onModuleLoad() {
        registerJSNIFunctions(this);
    }

    private native void registerJSNIFunctions(MainWindow mw) /*-{
        $wnd.sayHi = function (name) {
            mw.@MainWindow::sayHi(Ljava/lang/String;)(name);
        }
    }-*/;

    public void sayHi(String name) {
        alert("Hi " + name); // not valid, but you get the point
    }
    ...
}

public class SecondWindow implements EntryPoint {
    ...
    @Override
    public void onModuleLoad() {
        ...
        sayHi("kylos");
    }

    public static native void sayHi(String name) /*-{
        $wnd.opener.window.$wnd.sayHi(name);
    }-*/;
}

これをホストモードで動作させる方法についてのアイデアはありますか? または、GWT とのクロスウィンドウ通信を行うためのより良い方法はありますか?

4

2 に答える 2

0

したがって、問題は散発的なようです。フィルターがトリガーされる正確な方法はわかりませんが、フィルターがトリガーされると、書き換えられたページが IE によってキャッシュされるため、ブラウザーのキャッシュが空になるまで、今後の要求は失敗することが保証されます。

また、フィルターを無効にするために使用できるカスタム ヘッダー X-XSS-Protection について説明しているMicrosoft のドキュメントも見つけました。明らかに、これはホスト モードの開発システムでのみ使用する必要があります。

フィルターを無効にするには、次のヘッダーをサーバー構成に追加します。

X-XSS-Protection: 0
于 2013-06-14T12:54:08.820 に答える