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

我的未来我决定 提交于 2019-12-30 19:29:00

问题


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).


回答1:


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.




回答2:


I don't think you can detect in the sense of having some sort of Page.IsInIFrame() kind of functionality, but you could consider having different base classes for those pages that are loaded in an IFrame and those that aren't so that you can know the error is from a request that was for an IFrame page that may help to some extent.




回答3:


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?




回答4:


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




回答5:


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




回答6:


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


来源:https://stackoverflow.com/questions/725871/server-side-detection-that-a-page-is-shown-inside-an-iframe

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!