2009-06-05 10 views
2

内からJavaScriptを実行:サーバー上のレガシーWebアプリケーション(サーバー2) 私が持っているのiframe

  • のiframeのいくつかの獣を実行している

    1. ウェブサーバ(サーバ1)
    2. アプリケーションサーバ1サーバからアプリケーションに引っ張って2

    私の問題は、次のとおりです。

    レガシーアプリは、そのフォーム上のJSの検証を使用しています。ユーザーが不完全なフォームを送信しようとすると、ダミーであることをユーザーに知らせるアラートがポップアップします。もちろん、サーバー1とサーバー2が異なるドメインに存在するため、iframeの内部でアプリケーションを実行すると失敗します。

    私は、サーバー1上の次のプロキシのディレクティブを設定してみました:

    ProxyPass /legacy_app http://server2.url/legacy_app 
    ProxyPassReverse /legacy_app http://server2.url/legacy_app 
    

    私は今http://server1.url/legacy_appからのiframeを提供することができるよ、私はまだそれのiframe内のJavaScriptを実行することができないんだ - 私が取得アプリが別のドメインで動作していたときと同じセキュリティ/アクセスエラーです。

    他にも何か試してみることはできますか?

  • +0

    あなたはどのようなWebサーバーを実行していますか? –

    答えて

    0

    サーバー#1でホストされているが、iframe(サーバー#2から参照されている)を使い果たしている.jsファイル内でスクリプトをホストしようとしましたか?

    ブラウザは外部サイトを参照しても問題ありませんが、外部サイトから参照されている場合はブラウザが好きではないと思います。

    私はそれを試したことはありませんが、私はこの種の問題を回避する方法について聞いたことがあります。 Googleアナリティクスが使用する方法であることはわかっています。Googleのサーバーから.jsファイルをリクエストする必要がありますが、そこにいったん設定すると、ブラウザにアクセスできます。

    1

    ボックスが埋め込まれている場合、従来のアプリはどうやってチェックされていますか?シンプルなjavascript?アヤックス?

    アラートボックス自体は引き続き動作するはずです。アラートを発行するかどうかを判断するコードは、壊れている可能性があります。

    まだページがリモートホスト上にあるにもかかわらず、私に警告のonLoadを与え、私のローカルのApacheサーバー上で次のコードを実行:

    <html> 
        <body> 
        <div> 
         <iframe src="http://www.crowderassoc.com/javascript/alertbox.html" width="300" height="200"> 
        </div> 
        </body> 
    </html> 
    

    サーバ#1のページに上記のコードをコピーしてみて見ますiframeのリモートサイトからアラートボックスを取得した場合。

    0

    ジョー、あなたは正しいと思います。他のサーバーを使った簡単なテストでは、リモートホストされたスクリプトからのアラートを非常に簡単にトリガーできることがわかりました。

    レガシーサーバーはクライアントのもので、簡単にアクセスすることはできませんが、JSを見ていると、何らかのクロスサイト/フレーム検出が行われているようです。

    0

    私は遠くのサーバー上にスクリプトの多い既存のアプリケーションの周りにアプリケーションを構築しようとしていたこの状況を抱えていましたが、アプリケーションは独自のウィンドウで開かれていれば正常に動作しますフレームにロードしようとすると、フレームが破損します。

    私がこのプロジェクトでやったことは、幅495pxのポップアップでローカルアプリケーションを開き、メイン(既存の)ウィンドウに外部アプリケーションを読み込み、メインの外部アプリケーションウィンドウを画面にリサイズすることでした幅から495ピクセルを差し引き、画面上にウィンドウを並べて配置します。これにより、エンドユーザーはフレームで何をしようとしていたかと同様の効果が得られました。

    それが助け場合は、ここで私は私のindex.phpファイルから使用するコードです:

    // Manipulating the current window 
    window.location.href = 'http://www.someExternalApp.com'; // setting the page location. 
    window.name = 'legacyapp'; // setting the window name just the for heck of it. 
    moveTo(0,0); // moving it to the top left. 
    
    // Resizing the current window to what I want. 
    mainWindowWidth = screen.width - 495; 
    mainWindowHeight = screen.height; // Makes the window equal to the height of the users screen. 
    resizeTo(mainWindowWidth,mainWindowHeight); 
    
    // function for opening pop-up 
    function openWin(){ 
        win2 = window.open(page,'',winoptions); 
        win2.focus(); 
    } 
    
    // internal app location (for use in pop-up) 
    page = 'someLocalApp.php'; 
    
    // internal app Window Options (for pop-up) 
    winoptions = 'width=490,height='+mainWindowHeight+',top=0,left='+mainWindowWidth+'leftscrollbars=1,scrolling=1,scrollbars=1,resizable=1,toolbar=0,location=0,menubar=0,status=0,directories=0'; 
    
    // Opens the local app pop-up 
    openWin(); 
    
    関連する問題