2009-05-02 15 views
8

Estoy tratando de publicar en el formulario de inicio de sesión de una aplicación en otro subdominio de mi sitio. Es una aplicación de terceros a la que no tengo acceso de fuente.¿Es posible encontrar una nueva URL de iframe entre dominios después de una redirección?

Sé que no puede acceder a la mayoría de las características de un iframe de dominios cruzados debido a same origin policy. Sin embargo, todo lo que necesito para acceder es la URL a la que se redirigió (a través de JavaScript) dentro del iframe. Tiene un token de sesión que quiero pasar.

Parece algo que podría ser lo suficientemente seguro como para permitirlo, pero no he encontrado la manera de hacerlo todavía. Estoy usando jQuery, y he intentado $('iframe').contents(), pero parece que no tengo permisos en absoluto sobre ese objeto. También he marcado $('iframe').attr('src'), pero sigue siendo la URL previa a la redirección. ¿Hay otra manera?

+0

De hecho parece que es imposible. – Jerph

Respuesta

11

No, no tiene acceso a propiedades dentro de un iframe. Solo tiene acceso a las propiedades de estilo y posicionamiento externo.

Es por esto que los marcos son tan difíciles de trabajar. Por lo general, solo los uso si no me importa lo que se hace dentro de ellos.

¿No puede hacer una autenticación del lado del servidor y el paso de tokens? En lugar de hacer que el cliente haga la autenticación, ¿no puedes hacer eso en tu servidor? Es posible que deba hacer un trabajo adicional para crear la solicitud HTTP y analizar la respuesta, pero evitará cualquier problema con el iframe.

La línea inferior es iframes probablemente no son los mejores en los que confiar (especialmente cuando se trata de la funcionalidad de navegador cruzado) para cosas importantes como la autenticación.

2

Pruebe esto example (método 2) en el cual el autor configura otro iframe dentro del primero, cargando una página en el dominio original. La página interna puede llamar a javascript en el elemento primario externo, ya que se cargan en el mismo dominio. Simplemente cargue la página interna con los parámetros adecuados, que se pueden pasar al principal.

Cuestiones relacionadas