¿Los encabezados de Intercambio de recursos de origen cruzado pueden autorizar el acceso IFRAME de X-Domain?

Ajustar la altura de un IFRAME para que coincida con la altura de su página de contenido puede ser una verdadera resistencia cuando las páginas que contienen y contenido no son del mismo dominio.

¿Los encabezados Cross-Origin Resource Sharing (CORS) hacen posible que la página de contenido autorice el acceso entre dominios a sus recursos y, por lo tanto, permita que su página contenedora lea su altura? (o, como alternativa, ¿la página que contiene autoriza a la página de contenido a anunciar su altura?)

¿O es CORS estrictamente una cosa de AJAX?

CORS no le permite hacer eso, pero puede usar mensajes cruzados para enviar cadenas entre iframes y sus ventanas principales incluso en dominios diferentes, y usar eso para comunicarse.

La mayoría de los navegadores lo admiten, aunque el modo de Internet Explorer difiere del de los demás .

Suponiendo que lo que desea es que el iframe anuncie a la página principal la altura deseada, puede poner esto en su código iframe (no probado):

var message = { width: desiredWidth, height: desiredHeight }; window.parent.postMessage(JSON.stringify(message),'*'); 

Y esto en tu página que contiene:

 function onMessage (event) { if (event.source != theIFrameElement.contentWindow) return; var message = JSON.parse(event.data); var desiredHeight = message.height; var desiredWidth = message.width; } if (window.attachEvent) window.attachEvent('onmessage', onMessage); else if (window.addEventListener) window.addEventListener('message', onMessage, false); 

El evento attachEvent es para IE y addEventListener es para todos los demás. Es posible que desee verificar el origen del objective por motivos de seguridad, pero esa es la idea general.

EDITAR : soporte de navegador para mensajería entre documentos (-fsb)