2010-10-18 15 views
5

Tengo un iframe que estoy usando para incorporar algo de contenido alojado por un proveedor de terceros a nuestro sitio web. Estamos tratando de determinar la altura de ese contenido para ajustar la altura del iframe, pero estoy obteniendo errores de scripts cruzados. No sabía que los subdominios cuentan como sitios cruzados. ¿Hay alguna forma de evitar esto sin tener que mantenerlos en subdominios coincidentes?Cross site scripting en el mismo dominio, diferentes subdominios

Como referencia, nuestro comercializador semanal está alojado por el proveedor de terceros en Flash, pero con el subdominio podemos redirigir a ellos mientras mantenemos al usuario en nuestros dominios para fines de cookies.

Respuesta

4

Desde uno de sus subdominios, puede (con algunas excepciones) establecer el dominio para permitir un acceso más amplio a otros subdominios en el mismo dominio principal.

Echa un vistazo a esta página: http://www.tomhoppe.com/index.php/2008/03/cross-sub-domain-javascript-ajax-iframe-etc/

+0

El vendedor Estoy trabajando con no estar de acuerdo con esto de inmediato, pero que probé esto y funcionó, así que sé esto por lo menos funciona. ¡Gracias! – XOPJ

3

también echar un vistazo a cross window messaging

Esta primera página es el emisor - está llamando postMessage (enviar el mensaje de texto) y también lleva a cabo el iframe dentro de la cual se lleva a cabo la ventana de recepción.

<iframe src="http://dev.jquery.com/~john/message/" id="iframe"></iframe> 
<form id="form"> 
    <input type="text" id="msg" value="Message to send"/> 
    <input type="submit"/> 
</form> 
<script> 
window.onload = function(){ 
     var win = document.getElementById("iframe").contentWindow; 
     document.getElementById("form").onsubmit = function(e){ 
       win.postMessage(document.getElementById("msg").value); 
       e.preventDefault(); 
     }; 
}; 
</script> 

La página de seguimiento es el receptor - que tiene un detector de eventos que vela con destino para los mensajes que se transmiten a la misma y los inyecta en el DOM.

<b>This iframe is located on dev.jquery.com</b> 
<div id="test">Send me a message!</div> 
<script> 
document.addEventListener("message", function(e){ 
     document.getElementById("test").textContent = 
       e.domain + " said: " + e.data; 
}, false); 
</script> 
+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – VMAtm

+0

Claro ... Pero aquí tengo que copiar mucho de la página para mostrar el ejemplo. – mplungjan

Cuestiones relacionadas