2009-04-07 22 views
5

¿Es posible determinar, en el lado del servidor, si una página se ha cargado dentro de un IFrame?Detección del lado del servidor de que se muestra una página dentro de un IFrame

Cuando ocurren ciertos errores en mi aplicación, el usuario se redirige a Default.aspx y se muestra un mensaje de error. El texto de ese mensaje de error se establece en la sesión mediante el código de manejo de excepciones. El mensaje de error se borra de la sesión una vez que se ha mostrado.

Sin embargo, parte de mi aplicación tiene que usar un IFrame (está haciendo una verificación de pago con tarjeta 3D Secure, que requiere un IFrame para mostrar la interfaz de usuario de autenticación del proveedor de la tarjeta). Si se produce un error durante este proceso, mi redirección entra en vigor dentro del IFrame. Estoy usando JavaScript para detectar esto y recargar Default.aspx correctamente, pero esto significa que obtengo dos Page_Loads en rápida sucesión, y el mensaje de error solo se muestra en el primero (y luego se borra).

+1

Mozilla Developer Network. De hecho, creo que acabo de abrir una lata de gusanos con esto y probablemente no debería haber agregado mi mensaje aquí hasta que me haya enterado de lo que está pasando, lo siento. (vea http://stackoverflow.com/questions/15344187/how-does-it-appear-that-mdn-can-detect-a-request-from-an-iframe-on-the-server-si) – JayC

Respuesta

0

No creo que pueda detectar en el sentido de tener algún tipo de tipo de funcionalidad Page.IsInIFrame(), pero podría considerar tener diferentes clases base para aquellas páginas que están cargadas en un IFrame y aquellas que no están cargadas para que sepa que el error proviene de una solicitud que fue para una página de IFrame que puede ayudar en cierta medida.

0

No hay manera desde el lado del servidor. La única forma es a través de javascript. Cuando haces el redireccionamiento, ¿puedes pasar el mensaje de error o el código a través de una cadena de consulta?

0

¿No funciona redireccionar con Javascript con window.location? ¿Forzar una redirección de página completa?

0

simplemente, verifique la URL de la página actual ... si es lo mismo con la página IFrame luego redirija a Default.aspx o lo que sea.

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

Just tenga en cuenta que necesita utilizar Request.UrlReferrer y no Request.Url, ya que Request.Url devolverá la URL del iframe. –

Cuestiones relacionadas