2009-09-01 25 views
13

Estoy intentando acceder y editar el contenido de un iframe. El iframe apunta a una página en un subdominio en mi propio dominio. Este es el código de javascript que estoy usando, aunque en realidad no importa.¿Puedo acceder a los contenidos de un iframe desde un subdominio si uso www. en el dominio principal?

$('iframe').load(function(){ 
    $('div.code textarea.html').val($(this).contents()[0].html()); 
}); 

Cuando lo ejecuto, indica que no tengo permiso para acceder a example.domain.com desde www.domain.com. Entonces, ¿importa si el dominio del que intento acceder tiene el www? Porque mi anfitrión no me permite no usar www.

Respuesta

21

Same-Origin-Policy requiere exactamente el mismo nombre de host de forma predeterminada.

para decirle que no, establecer: (. Ejemplo) documento

document.domain= 'domain.com'; 

desde el guión, tanto en la matriz de documentos y el iframe (www.).

Tenga en cuenta que establecer una carga de un iframe (o imagen) escrito estáticamente desde el script no es confiable, ya que es concebible que el iframe se cargue completamente entre el tiempo que el analizador lee la etiqueta iframe y cuando lee el etiqueta de script que establece la carga.

Para evitar esto, incluya el controlador de eventos como un atributo en línea '< iframe onload = "doSomething()"' (uno de los pocos lugares donde el manejo de eventos en línea tiene algún propósito) o, si es aceptable para accesibilidad, crear el propio elemento iframe a partir del script, configurando la carga antes de escribir el src y agregarlo a la página.

+0

¿Esto hace posible que el subdominio acceda a las cookies del dominio? – fent

+1

A través de la lectura 'window.parent.document.cookie', sí. Sin embargo, el envío y recepción de cookies sin el parámetro de cookie 'dominio' no se ve afectado por document.domain. – bobince

Cuestiones relacionadas