1

別のサーバーから自分のページにページをロードするアプリケーションを構築しています。データを取得している特定のページは、その外部サーバーで (OAuth アクセスを使用して) 実行されているクエリに依存します。そのページの URL を取得したら、それを iFrame にロードして自分のページに表示します。

問題は、クエリが提供する URL が実際には、実際に行きたい場所に到達する前に 3 回転送されるページへの URL であることです。さらに複雑なことに、最初のページにフレームバスター コードもあります。フレームバスターを打ち負かすために、ページのアンロード時に204ステータスを返すページにリダイレクトするようにページを設定しましたが、必要なコンテンツの代わりに最初の空白ページを表示するだけでスタックします。リダイレクトします。

私の最初のアイデアは、ページのアンロード時に発信位置リクエストのコードを取得しようとすることでした。ユーザーがリダイレクトされている場所を確認し、代わりにそのリクエストを iFrame 内にロードできることを望んでいました。3 回繰り返して、iFrame で正しいページを取得します。しかし、直感的には、これは機能しないはずだと感じました。もちろん、ユーザーがサイトを離れたときにページがどこに行くのかをページに表示できるようにすることは、プライバシーに関する重大な問題になるためです。

次に、リダイレクト用のスクリプトを見つけるために、iFrame にロードされた新しいページを順番に解析できるのではないかと考えていました。ただし、取得していたコードを調べても何も起こらなかったため、サーバー側で行われたと確信しています。

iFrame 内でそのリダイレクトを維持する方法を探し始めました。つまり、リダイレクトの発生を許可しますが、フレームバスターコードが何もしないようにしながら、強制的に iFrame 内にとどまらせます。これが最も簡単な解決策ですが、良い方法が見つかりません。現在、iFrame 内に空白のページが読み込まれているだけですが、iFrame で実行されていないリダイレクトを実行するサーバー側に何かがあると思います。フレーム バスター コードは、iFrame ではなく、ドキュメント全体の変更のみを防止します。これを行う良い方法はありますか、それとも間違った方法で進んでいますか?

4

2 に答える 2

1

フレームバスターを防ぐには、ここから:

<script type="text/javascript">
    var prevent_bust = 0  
    window.onbeforeunload = function() { prevent_bust++ }  
    setInterval(function() {  
      if (prevent_bust > 0) {  
        prevent_bust -= 2  
        window.top.location = 'http://server-which-responds-with-204.com'  
      }  
    }, 1)  
</script>
于 2012-07-23T21:28:12.420 に答える
0

最初のページを curl でローカルにロードし、バスティング コードを削除し、すべてのリンクを絶対リンクにして、iframe に表示します。

それは尊重されたようにリダイレクトされ、あなたの陽気なことをするはずです. ドキュメント内のすべての URL を絶対パスにしてください。スクリプト タグの後に独自のコードを貼り付けてオーバーライドする必要があるかもしれない JavaScript の URL と関数を忘れないでください。

于 2012-07-23T21:28:57.947 に答える