简体   繁体   中英

Server-side detection that a page is shown inside an IFrame

Is it possible to determine - server-side - whether a page has been loaded within an IFrame ?

When certain errors happen in my application the user gets redirected to Default.aspx and an error message is shown. The text of that error message gets set in session by exception handling code. The error message gets cleared from session once it has been shown.

However, part of my application has to use an IFrame (it's doing a 3D Secure card payment check, which mandates an IFrame in order to display the card provider's authentication UI). If an error takes place during this process my redirect takes effect within the IFrame . I am using JavaScript to detect this and reload Default.aspx correctly, but this means that I get two Page_Loads in rapid succession, and the error message only gets shown on the first one (and then cleared).

You can do it in client side: How to identify if a webpage is being loaded inside an iframe or directly into the browser window?

The workaround i found is put some identifier into querystring of a url opened inside iframe.

This is impossible because client can open iframe with javascript disabled. http://caniuse.com/#feat=iframe-sandbox

我不认为您可以检测到某种类型的Page.IsInIFrame()类型的功能,但您可以考虑为那些在IFrame中加载的页面设置不同的基类,而不是那些您可以知道错误来自IFrame页面的请求,该请求可能在某种程度上有所帮助。

There's no way from the server-side. The only way is via javascript. When you do the redirect, can you pass the error message or code via a querystring?

Won't it work to redirect using Javascript with window.location? Forcing a full page redirect?

simply, check the url of current page.. if it's the same with the IFrame page then redirect to Default.aspx or whatever.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM