c# - allowfullscreen - Detectar si una página está dentro de un iframe-al lado del servidor
iframe url (4)
¿Cómo puedo detectar el lado del servidor (c #, asp.net mvc) si la página cargada está dentro de un iframe? Gracias
Esto no es posible, sin embargo.
<iframe src="mypage?iframe=yes"></iframe>
y luego verifique el lado del servidor si la cadena de consulta contiene iframe = yes o con el encabezado del remitente enviado por el navegador.
No creo que el servidor pueda hacer esto, así que, ¿por qué no poner un control oculto en su página que estará en el iframe? Cuando se carga la URL en el iframe, puede agregar algún código del lado del cliente para configurar la entrada oculta para indicar que está en un iframe. La verificación más fácil sería en el lado del cliente en un método onload, como este:
// Set hidden input
someHiddenInput.value = self != top
Es más seguro que la cadena de consulta, pero aún así podría no ser suficiente seguridad para usted.
Mis 2 centavos.
No hay forma de verificar esto que se ajuste a su requisito de "seguro" como se indica en su comentario sobre la respuesta de @WTP.
Utilice el siguiente Código dentro del formulario:
<asp:HiddenField ID="hfIsInIframe" runat="server" />
<script type="text/javascript">
var isInIFrame = (self != top);
$(''#<%= hfIsInIframe.ClientID %>'').val(isInIFrame);
</script>
Luego puede verificar fácilmente si hay un iFrame en el código subyacente:
bool bIsInIFrame = (hfIsInIframe.Value == "true");
Probado y trabajado para mí.
Edición: tenga en cuenta que necesita jQuery para ejecutar mi código anterior. Para ejecutarlo sin jQuery, use un código como el siguiente código (no probado) para establecer el valor del campo oculto:
document.getElementById(''<%= hfIsInIframe.ClientID %>'').value = isInIFrame;
Edición 2: esto solo funciona cuando la página se cargó una vez. Si alguien tiene idea para mejorar esto, hágamelo saber. En mi caso, por suerte, solo necesito el valor después de una devolución.