6

Ho una pagina su un server interno, server1.mydomain.com/page.jsp e un'altra pagina su un server interno diverso, 10.x.x.x: 8081/page.aspx.SECURITY_ERR: DOM Eccezione 18 quando si applica document.domain su entrambi i siti. Come posso risolvere questo?

Su server1.mydomain.com, ho impostato document.domain in page.jsp come questo:

//page.jsp on server1.mydomain.com 
document.domain = document.domain; 

Quando ho emettere un avviso document.domain, si tratta come server1.mydomain.com.

Sul server 10.xxx, ho impostato document.domain in Page.aspx, di conseguenza, come questo:

//page.aspx on 10.x.x.x 
document.domain = "server1.mydomain.com"; 
// test if same-origin policy violation occurs 
document.getElementById("div_el").innerHTML = window.top.location.href; 

In Safari 5.1.5, un errore compare sulla console:

SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent." 

Da quanto ho capito, quando si imposta document.domain, il numero di porta è impostato su null; quindi, devi impostarlo su entrambe le estremità, cosa che ho fatto. Quindi, questo errore si verifica e sto graffiando la mia testa perché. Questo ha qualcosa a che fare con il fatto che sto usando 10.x.x.x e non un vero nome di dominio?

Grazie.

risposta

15

È possibile utilizzare solo document.domain per passare da un sottodominio più specifico a un dominio meno specifico. Come ...

console.log(document.domain); // server1.mydomain.com 

document.domain = 'mydomain.com' 

console.log(document.domain); // mydomain.com 

Non può essere utilizzato per impostare una più specifica sottodominio o ad un dominio completamente diverso.

+0

Quindi, se cambio entrambi in mydomain.com, se entrambi i server sono su mydomain.com, funzionerebbe? Supponiamo che io abbia server1.subdomain.mydomain.com e server2.subdomain.mydomain.com. Se avessi impostato entrambi su mydomain.com, funzionerebbe? – user717236

+1

@ user717236: se la pagina del client è ospitata da 'mydomain.com', non sarà possibile effettuare richieste AJAX su' server1.subdomain.mydomain.com' o 'server2 ...', e usando 'documento. domain' non aiuterà. Ma se è vero il contrario, e la pagina del client è ospitata ad esempio da 'server1.subdomain.mydomain.com', puoi usare' document.domain' in modo che tu possa fare richieste a 'mydomain.com' . –

+0

Oh, capisco. Quindi, nel mio caso, non penso che funzionerà, perché le pagine sono effettivamente ospitate su hostname.subdomain.mydomain.com. Se uno era serverX.mydomain.com e l'altro era serverY.subdomain.mydomain.com, quindi potevo fare qualcosa con esso. Torna al tavolo da disegno. Grazie per l'aiuto. – user717236

3

È possibile impostare solo document.domain sul valore corrente o su un super-dominio dell'impostazione corrente. Pertanto, una pagina su "foo.something.com" può impostarla su "something.com", ma non su "something.else.com".

+0

Grazie per il vostro aiuto. Sì, penso di capirlo un po 'meglio, ora. Questi due host non possono comunicare tra loro con document.domain, come è stato configurato. Dovrò pensare a qualcos'altro. Grazie ancora. – user717236