Cómo obtener la URL cargada en la página actual de iframe

Estoy usando iframe para cargar faroo.com como src en el marco predeterminado cuando busco y me muevo a otra página web usando faroo. Pero aún en el iframe src su pantalla faroo.com solo quería capturar la url de la página que se cargó en iframe

     $(function(){ $('#frameid').load(function(){ var z=$('#frameid').attr('src'); console.log('hi '+z); }); $('#clicked').on('click', function(){ $('#frameid').attr('src', 'http://www.faroo.com/'); }); });     

El o / p en console.log siempre es faroo.com, no el sitio web actual que ha cargado

Por cuestiones de seguridad, puede recuperar la URL siempre que el contenido del iframe y el javascript de referencia estén alojados en el mismo dominio.

En caso afirmativo, puede hacer algo como:

 document.getElementById("frameid").contentWindow.location.href 

Si los dos dominios son diferentes, tendrá todas las restricciones que se aplican al dominio de scripting de referencia entre sitios . Ejemplo:

 document.getElementById("frameid").src = 'http://www.google.com/'; alert(document.getElementById("frameid").documentWindow.location.href); Error: Permission denied to get property Location.href 

Por supuesto (excepto si encuentra algún gran defecto de seguridad en su navegador) simplemente no puede lograr lo que necesita utilizando javascript en el documento principal. Veamos con un ejemplo simple por qué . Si el navegador permitió lo que necesita, podría fácilmente:

  1. Crea una página, con un iframe oculto (ej. http://malicous.com/dont-trust )
  2. En ese iframe, abra una página secundaria con el proceso de inicio de sesión de algún sitio web (por ejemplo, http://insecure-web-site.com/redirectlogin )
  3. Si las cookies para niños están presentes y bajo ciertas circunstancias, la página dentro del marco se redireccionará al sitio web real, procediendo con el inicio de sesión del usuario.
  4. Desde la página principal, ahora podrá leer todas las informaciones confidenciales que se hayan enviado a través del proceso de inicio de sesión contenido en la URL, por ejemplo, tokens de acceso, ID de sesión, …
  5. En este punto, el sitio web de la víctima y sus usuarios se encuentran frente a un amplio conjunto de posibles amenazas de seguridad …

Parece que hay un truco para hacer que esto funcione y realmente no puedo creer que esté permitido. Así es como parece funcionar:

1) Cambie el dominio para que coincida con el iframe:

 document.domain =  

2) Obtenga la URL así:

 console.log($('iframe')[0].contentWindow.location.href) 

En mi opinión, esto no debería haber funcionado, pero lo hace. Probé con la siguiente versión en Safari, Chrome y Firefox a partir del 02/01/2017:

Principal: http://subdomain.website.com iframe: http://www.website.com

¿Qué piensas? ¿Está esto permitido permanentemente o es un descuido que será reparado pronto?

Actualizar

Comencé otro hilo para discusión aquí con respecto a la seguridad del navegador.

¿Este no es un problema grave de seguridad del navegador? RE: Hack de iframe entre dominios

Actualización 2

Parece que esto siempre será compatible para casos específicos.

https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy