Aquí está el caso:
página A contiene iframe B, B contiene iframe C, A y B están bajo el mismo dominio, C debajo de otro.
C intenta restablecer la ubicación del padre B con información adicional después de "#" para resolver la comunicación entre dominios usando la mensajería Fragment Id.
IE6/7/8 simplemente funciona bien con este caso, mientras que Firefox bloquea parent.location configuración con mensaje de error [Acceso a la propiedad denegada "código:" 1010]. Pero si B es la ventana superior, lo que significa que no hay A, Firefox también vive.
Es extraño para mí ... ¿Podrían ayudarme?
¡Gracias!Configuración de ubicación principal de JavaScript de Cross Domain error de firefox
Respuesta
Históricamente, cualquier ventana puede cambiar la ubicación de cualquier otra ventana. Esto resultó ser un problema porque, entre otras cosas, significaba que insertar un iframe de inicio de sesión en una ventana no era seguro (porque entonces un sitio malicioso podría reemplazar el iframe de inicio de sesión con una versión falsa). Con el tiempo, se han aplicado más restricciones a los cambios de ubicación en las ventanas del navegador, hasta ahora, cuando HTML5 y la mayoría de los navegadores han llegado a un acuerdo común en the ancestor policy. En pocas palabras, parafraseando la especificación de HTML 5, una ventana A puede cambiar la ubicación de otro si y sólo si la ventana B:
- los lugares de A y B tienen el mismo origen, es decir, que tienen el mismo esquema, anfitrión y puerto (http, stackoverflow.com, 80 por ejemplo) o
- B es una ventana de nivel superior, y A es una ventana en un marco anidado a cierta profundidad dentro de B (hijo directo, hijo de un niño, etc.) o
- B es una ventana abierta usando
window.open
y A puede cambiar la ubicación de la ventana que abrió B (por lo que B es una ventana emergente abierta por A, o una ventana emergente abierta por A, o con mayor profundidad) o - B no es una ventana de nivel superior, pero su ventana padre, o su ventana padre de los padres, o en alguna cantidad similar de parentesco las ubicaciones de esa ventana y A son del mismo origen
(mismo origen es más complicado que esto, pero la descripción incrustada anterior capta su esencia y cubre los casos más comunes.)
Según esta política, C puede cambiar la ubicación de A, y A puede cambiar la ubicación de B o C, pero C no puede cambiar la ubicación de B. Si necesita evitar esto, entonces debe cambiar la ubicación de su página A a algo que cambie B según corresponda; alternativamente, podría ask your page B to change its own location.
Afortunadamente eso es informativo, si no necesariamente útil. El modelo de seguridad del navegador no era tanto diseñado como evolucionado, y solo con el trabajo reciente en HTML5 realmente se está precisando para resolver estas incoherencias entre navegadores.
Dicho todo esto, estoy sorprendido de que IE7 e IE8 funcionen para usted, según tengo entendido, la política anterior se basó principalmente en la política implementada por IE7.
Desde C puede acceder a la ventana de B usando window.top
.
intento, var B = window.top; B.location = "...";
si usa window.top de C, obtuve A en lugar de B, pero no quiero restablecer la ubicación de A ... –
- 1. Firefox Cross Domain Request
- 2. Cross Domain ExternalInterface "Método de llamada de error en NPObject"
- 3. cross-domain iframe resizer?
- 4. Cross Domain User Tracking
- 5. Ajax Cross Domain Calls
- 6. jQuery cross domain iframe scripting
- 7. Cookies de Cross Domain con FormsAuthentication
- 8. backbone.js y cross domain scripting
- 9. Formulario HTML POST Cross Domain
- 10. cross-domain AJAX post call
- 11. ¿Cuál es el objetivo de la política Anti-Cross-Domain?
- 12. Cross Domain SQL Server Logins mediante la autenticación de Windows
- 13. Cross Domain jQuery Ajax Request y WCF REST Service
- 14. ¿Cómo implemento Cross Domain URL Access desde un Iframe usando Javascript?
- 15. SCORM Cross Domain, SCO-Fetcher o cualquier otra solución
- 16. Error de Javascript "no definido" en Firefox
- 17. Float Domain Error
- 18. Leer cookies entre dominios (Cross-Sub-Domain) en ColdFusion (HTTPS)
- 19. Cross-browser, método de javascript getAttribute()?
- 20. cookie duplicada de Firefox (¿error de Firefox?)
- 21. Navegador Canvas CORS Soporte para Cross Domain Cargado de manipulación de imágenes
- 22. Javascript: configuración de location.href frente a la ubicación
- 23. Phonegap/Cordova whitelisted cross domain Solicitud de SSL no funciona después de exportar APK
- 24. cross-window javascript events
- 25. Javascript: document.execCommand cross-browser?
- 26. iPhone: Prueba de aplicación y ubicación principal
- 27. Configuración de Firefox sin cabeza con MozRepl
- 28. ¿Cómo hacer que firefox informe el error de javascript?
- 29. ¿Por qué prohibir cross-domain ajax cuando funcionan las etiquetas de script?
- 30. Configuración de sendgrid para raíles ... devolviendo Error de autorización
gracias por su respuesta clara y hermosa, voy a reconsiderar mi solución sobre esto. –
Gracias Jeff. Debe tenerse en cuenta que window.postMessage al que enlaza funciona en todos los navegadores modernos, pero la sintaxis en IE es un poco diferente. Publiqué una pregunta similar a esta y terminé respondiéndola yo mismo. Aquí está mi respuesta, que tiene una implementación simple de ejemplo entre navegadores: http://stackoverflow.com/questions/1860470/is-herehere-any-way-for-an-iframe-to-change-the-top-windows- url/1861054 # 1861054 – Kip