6

Tengo una página en un servidor interno, server1.mydomain.com/page.jsp y otra página en un servidor interno diferente, 10.x.x.x: 8081/page.aspx.SECURITY_ERR: DOM Exception 18 al aplicar document.domain en ambos sitios. ¿Cómo resuelvo esto?

En server1.mydomain.com, puse document.domain en page.jsp así:

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

Cuando emito una alerta en document.domain, lo hará como server1.mydomain.com.

En el servidor 10.xxx, me puse en document.domain Page.aspx, como resultado, de esta manera:

//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; 

En Safari 5.1.5, se producirá un error en la consola:

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

Por lo que entiendo, cuando configura document.domain, el número de puerto se establece en nulo; entonces, tienes que configurarlo en ambos extremos, lo cual hice. Entonces, este error ocurre y me estoy rascando la cabeza por qué. ¿Tiene esto algo que ver con el hecho de que estoy usando 10.x.x.x y no un nombre de dominio real?

Gracias.

Respuesta

15

Solo puede usar document.domain para cambiar de un subdominio más específico a un dominio menos específico. Como ...

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

document.domain = 'mydomain.com' 

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

No se puede utilizar para establecer un subdominio más específico o para un dominio completamente diferente.

+0

Entonces, si cambio ambos a mydomain.com, siempre que ambos servidores estén en mydomain.com, ¿funcionaría? Supongamos que tengo server1.subdomain.mydomain.com y server2.subdomain.mydomain.com. Si configuro ambos en mydomain.com, ¿funcionaría? – user717236

+1

@ user717236: si la página del cliente está alojada en 'mydomain.com', no podrá realizar solicitudes AJAX a' server1.subdomain.mydomain.com' o 'server2 ...', y usar 'document. domain' no ayudará. Pero si sucede lo contrario y la página del cliente está alojada, por ejemplo, en 'server1.subdomain.mydomain.com', puede usar' document.domain' para que pueda realizar solicitudes a 'mydomain.com' . –

+0

Oh, ya veo. Por lo tanto, en mi caso, no creo que funcione, porque las páginas están hospedadas de manera efectiva en hostname.subdomain.mydomain.com. Si uno era serverX.mydomain.com y el otro era serverY.subdomain.mydomain.com, entonces podría hacer algo con él. De vuelta al tablero de dibujo. Gracias por tu ayuda. – user717236

3

Solo puede establecer document.domain en su valor actual o en un superdominio de la configuración actual. Por lo tanto, una página en "foo.something.com" puede establecerlo en "something.com", pero no "something.else.com".

+0

Gracias por su ayuda. Sí, creo que lo entiendo un poco mejor, ahora. Estos dos hosts no pueden comunicarse entre sí con document.domain, ya que está configurado. Tendré que pensar en otra cosa. Gracias de nuevo. – user717236

Cuestiones relacionadas