2009-04-07 16 views
5

IFrame内にページがロードされているかどうかを確認することはできますか?ページがIFrame内に表示されているというサーバー側の検出

アプリケーションで特定のエラーが発生すると、ユーザーはDefault.aspxにリダイレクトされ、エラーメッセージが表示されます。そのエラーメッセージのテキストは、例外処理コードによってセッションに設定されます。エラーメッセージは、一度表示されるとセッションから消去されます。

しかし、私のアプリケーションの一部はIFrame(カードのプロバイダの認証UIを表示するためにIFrameを要求する3Dセキュアカード支払いチェックを行っています)を使用しなければなりません。このプロセス中にエラーが発生した場合、リダイレクトはIFrame内で有効になります。私はこれを検出してDefault.aspxを正しく読み込むためにJavaScriptを使用していますが、これは2つのPage_Loadsが急速に連続して取得され、エラーメッセージが最初のものにしか表示されずにクリアされることを意味します。

+1

Mozilla Developer Network。私は実際にこれでワームの全缶を開けたばかりだと思うし、何が起こっているのか分かるまで、私のメッセージをここに追加すべきではないだろう。 (http://stackoverflow.com/questions/15344187/how-does-it-appear-that-mdn-can-detect-a-request-from-an-iframe-on-the-server-siを参照) – JayC

答えて

0

Page.IsInIFrame()のような種類の機能を検出することはできませんが、IFrameに読み込まれたページとそのページには異なる基本クラスがあると考えることができますある程度助けてもらえるIFrameページのリクエストからのエラーであることがわかります。

0

サーバー側からの方法はありません。唯一の方法はjavascript経由です。リダイレクトを行うと、エラーメッセージやコードをクエリ文字列で渡すことができますか?

0

window.locationを使用してJavascriptを使用してリダイレクトすることはできませんか?フルページリダイレクトを強制しますか?

0

iframeページと同じ場合は、Default.aspxなどにリダイレクトしてください。

Dim urlpath1 As String = HttpContext.Current.Request.Url.AbsoluteUri 
If Right(urlpath1, 13) = "WebForm1.aspx" Then 
     Response.Redirect("~/") 
    Else 
     Response.Write("It's OK!") 
    End If 
+0

ちょうどRequest.Urlはiframe URLを返すので、Request.UrlReferrerではなくRequest.Urlを使用する必要があることに注意してください。 –

関連する問題