2009-09-01 15 views
13

Sto provando ad accedere e modificare il contenuto di un iframe. L'iframe punta a una pagina su un sottodominio nel mio dominio. Questo è il codice javascript che sto usando, anche se non ha molta importanza.Posso accedere ai contenuti di un iframe da un sottodominio se utilizzo www. sul dominio principale?

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

Durante l'esecuzione si dice che non ho il permesso di accedere a example.domain.com da www.domain.com. Quindi importa se il dominio al quale provo ad accedere ha il www? Perché il mio ospite non mi consente di non usare www.

risposta

21

La stessa politica dell'origine richiede lo stesso identico hostname per impostazione predefinita.

a raccontarla non, impostare: (es.) Documento

document.domain= 'domain.com'; 

dallo script sia il genitore del documento e l'iframe (www.).

Si noti che l'impostazione di un carico di un iframe (o immagine) scritto staticamente dallo script non è affidabile, poiché è possibile che l'iframe venga caricato completamente tra il momento in cui il parser legge il tag iframe e quando legge il tag script che imposta l'onload.

Per evitare ciò, includere il gestore eventi come un '< iframe onload in linea' = attributo "doSomething()" '(uno dei pochi punti in cui la gestione eventi inline ha qualche scopo) o, se accettabile per l'accessibilità, crea l'elemento iframe stesso dallo script, impostando l'onload prima di scrivere l'src e aggiungerlo alla pagina.

+0

In questo modo è possibile per il sottodominio accedere ai cookie del dominio? – fent

+1

Attraverso la lettura di 'window.parent.document.cookie', sì. L'invio e la ricezione di cookie nel parametro "dominio" del cookie non sono influenzati da document.domain, tuttavia. – bobince

Problemi correlati