服务器端检测页面显示在IFrame中

时间:2009-04-07 13:59:02

标签: asp.net iframe

是否可以确定 - 服务器端 - 是否在IFrame内加载了一个页面?

当我的应用程序中发生某些错误时,用户会被重定向到Default.aspx并显示错误消息。该错误消息的文本由异常处理代码在会话中设置。一旦显示,错误消息就会从会话中清除。

但是,我的部分应用程序必须使用IFrame(它正在执行3D安全卡支付检查,该检查要求IFrame以显示卡提供商的身份验证UI)。如果在此过程中发生错误,我的重定向将在IFrame内生效。我正在使用JavaScript来检测并正确地重新加载Default.aspx,但这意味着我快速连续获得两个Page_Loads,并且错误消息仅显示在第一个(然后清除)。< / p>

6 个答案:

答案 0 :(得分:3)

您可以在客户端执行此操作:How to identify if a webpage is being loaded inside an iframe or directly into the browser window?

我找到的解决方法是在iframe中打开的网址的查询字符串中添加一些标识符。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

服务器端没办法了。唯一的方法是通过JavaScript。当您进行重定向时,是否可以通过查询字符串传递错误消息或代码?

答案 3 :(得分:0)

使用带有window.location的Javascript重定向是不行的?强制整页重定向?

答案 4 :(得分:0)

这是不可能的,因为客户端可以在禁用javascript的情况下打开iframe。 http://caniuse.com/#feat=iframe-sandbox

答案 5 :(得分:-2)

简单地说,检查当前页面的网址.. 如果它与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