Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con document.domain y peticiones AJAX

Estas en el tema de Problema con document.domain y peticiones AJAX en el foro de Frameworks JS en Foros del Web. Buenas a todos: Tengo una aplicacion q necesita asignar explicitamente el document.domain a supongamos q es jk.net, y q esta correctamente asignado(la aplicacion funciona sin ...
  #1 (permalink)  
Antiguo 29/06/2007, 05:27
ajk
 
Fecha de Ingreso: abril-2006
Mensajes: 25
Antigüedad: 18 años
Puntos: 0
Problema con document.domain y peticiones AJAX

Buenas a todos:
Tengo una aplicacion q necesita asignar explicitamente el document.domain a supongamos q es jk.net, y q esta correctamente asignado(la aplicacion funciona sin problemas)

Pruebo a hacer una peticion xmlHttpRequest a un archivo xml del propio server (mismo dominio logicamente)
Al hacer la peticion xmlhttrequest, la respuesta me devuelve en el campo del responseText el valor correcto(el valor del xml q como tengo en mi server se cual es :) ), sin embargo no hay forma de parsear el dom de responseXML al comprobar con un plugin del firefox me dice q es null, (en ocasiones no xo sigue sin ser imparseable).

En principio pense, q habia hecho mal la xmlHttpRequest o el parseado, asi q despues de muchos experimentos comprobe q la aplicacion funcionaba correctamente al comentar la linea del document.domain y dejaba de funcionar al descomentarla... wtf

He leido q incluso esta restriccion q tiene ajax con los dominios impide incluso q se pueda hacer una peticion con la url del tipo file://, es posible q mi peticion x el archivo a pesar de tener una url http es decir supongamos http://a.jk.net/app/casa.xml me lo este interpretando como si fuera con el protocolo file://????????????

Alguna otra idea de pq es esto o soy tan inutil jejej?
  #2 (permalink)  
Antiguo 29/06/2007, 05:30
ajk
 
Fecha de Ingreso: abril-2006
Mensajes: 25
Antigüedad: 18 años
Puntos: 0
Re: Problema con document.domain y peticiones AJAX

Podeis hacer el experimento en vuestra casa añadiendo la linea document.domain con el sufijo de vuestro dominio y haciedno una peticion a un archivo xml vuestro.

Por cierto, no sale ningun error de ningun tipo, simplemente el response XML lo devuelve como null.(comprobado con firebug)

El xml tb esta correctamtne formado.
  #3 (permalink)  
Antiguo 30/06/2007, 08:36
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: Problema con document.domain y peticiones AJAX

loading............


asignar document.domain a jk.net ?.... eso no te entendí...
document.domain solo es de lectura....

Muestra un poco de código por favor y si tienes un ejemplo EN LINEA sería mejor.



connection closed.
__________________

Maborak Technologies
  #4 (permalink)  
Antiguo 02/07/2007, 01:02
ajk
 
Fecha de Ingreso: abril-2006
Mensajes: 25
Antigüedad: 18 años
Puntos: 0
Re: Problema con document.domain y peticiones AJAX

Cita:
Iniciado por MaBoRaK Ver Mensaje
loading............


asignar document.domain a jk.net ?.... eso no te entendí...
document.domain solo es de lectura....

Muestra un poco de código por favor y si tienes un ejemplo EN LINEA sería mejor.



connection closed.
Document.domain no es solo de lectura, pongo una fuente xa documentar el tema:
http://msdn2.microsoft.com/en-us/library/ms533740.aspx

El ejemplo sencillamente, seria intentar hacer una peticion por un xml local probando q funcione(cualquier aplicacion ajax q tengais sirve) y luego añadir a vuestra aplicacion el document.domain con un valor correcto(si poneis un valor incorrecto os saltar una excepcion del tipo valor ilegal)

Mi aplicacion es compleja xa poner aki todo el codigo, de todas formas ahi va el codigo de un ejemplo similar, aunque recomiendo q lo probeis con una aplicaicon ajax vuestra xa q veais mejor el problema:

Una cosa mas, como no veo justo q os compliqueis la vida a lo tonto, os digo el trasfondo de a q viene todo este cuento del document.domain, xq a algunos de vosotros os puede ser util en el futuro.

Suponed q teneis una aplicacion web con javascript, y cargais un frame q se encuentra en otra maquina distinta de vuestro dominio. Bien la cuestion es q ahora quereis q una instancia javascipt del frame cargado se comunique con una instancia javascript de la pagina q lo ha cargado(siento si parece un trabalenguas jeej)(algo asi como un mensaje del hijo al padre via js), bien, por politica de seguridad esto no se puede y te deniega el acceso con una excepcion, la solucion es asignar un valor al document.domain con un sufijo del dominio en ambos sitios, xa q esta comunicaion pueda ser util. Esto lo estoy utilizando en mi aplicacion web y es lo q me esta haciendo la puñeta con mi parte ajax.(siento el tocho)


Ahi va un ejemplo tipo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
<title>index</title>
<script type="text/javascript">
alert(document.domain);
document.domain="jk.net";

ac=this;
var _req;
this.loadXMLDoc=function(url) {
_req = false;
// branch for native XMLHttpRequest object
try {
//req = new XMLHttpRequest();
if (window.XMLHttpRequest){
_req = new XMLHttpRequest();

//alert("XMLHttpRequest Creado");
}
} catch(e) {
_req = false;
}
if(_req) {
_req.onreadystatechange = ac.httpCallback;
_req.open("GET", url, true);
_req.send(null);
//alert("...Enviada...");
}
}
this.httpCallback=function() {
// only if req shows "loaded"
if (_req.readyState == 4) {
// only if "OK"
if (_req.status == 200) {
// ...processing statements go here...
//alert("Llego contenido con exito");
//alert("Llega la respuesta, responseXML: "+req.responseXML);
alert("Llega la respuesta, responseTEXT: "+_req.responseText);
alert("Llega la respuesta, responseTEXT: "+_req.responseXML);
alert("Llega la respuesta, responseTEXT: "+_req.responseXML.firstChild.nodeType);
alert("Llega la respuesta, responseTEXT: "+_req.responseXML.firstChild.firstChild.nodeValue );
alert("Llega la respuesta, responseTEXT: "+_req.responseXML.getElementsByTagName('messages' ));
alert("Llega la respuesta, responseTEXT: "+_req.responseXML.getElementsByTagName('messages' ).item(0).firstChild.data);

alert("Llega la respuesta, responseTEXT: "+_req.responseXML.toString());


} else {
alert("There was a problem retrieving the XML data:\n" +_req.statusText);
}
}
}
// ac.loadXMLDoc("http://127.0.0.1:8993/Application1-xmls-context-root/xmlPrueba.xml");
</script>
</head>
<body></body>
</html>
  #5 (permalink)  
Antiguo 03/07/2007, 12:39
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: Problema con document.domain y peticiones AJAX

loading..........

Ahh!!! tu quieres tomar el contenido de OTRO DOMINIO...... por mas que modifiques el document.domain, no podras hacerlo hasta donde tengo entendido.

desde : http://store.company.com/dir/page.html
a:

http://store.company.com/dir2/other.html

Success

http://store.company.com/dir/inner/another.html

Success

https://store.company.com/secure.html

Failure Different protocol

http://store.company.com:81/dir/etc.html

Failure Different port

http://news.company.com/dir/other.html

Failure Different host

La solución es mas compleja que cambiar el document.domain.

http://blog.monstuff.com/archives/000262.html
http://www.mozilla.org/projects/secu...me-origin.html

Para cambiar las politicas: http://www.mozilla.org/projects/secu...pts.html#privs


connection closed.
__________________

Maborak Technologies

Última edición por MaBoRaK; 03/07/2007 a las 12:56
  #6 (permalink)  
Antiguo 04/07/2007, 00:12
ajk
 
Fecha de Ingreso: abril-2006
Mensajes: 25
Antigüedad: 18 años
Puntos: 0
Re: Problema con document.domain y peticiones AJAX

No, no me has entendido la idea xq me temo q me he explicado mal(si es asi lo siento), las maquinas si que estan en el mismo dominio, xo son distintas, a lo mejor un servicio esta en maquina1.company.com y otra en maquina2.company.com(xo ambas en el mismo dominio). El document.domain se asigna explicitamente xa q las instancias javascript se comuniquen, xo se asignan al valor del dominio, no se hace nada raro, me explico, si en el ejemplo el document.domain es company.com, se le asigna explicitamente al document.domain el valor company.com. (Tampoco se usa distinto protocolo ni puerto como hacias en un par de ejemplos).
Lo q trato de decir es q el document.domain no es un valor incorrecto.

Podrias hacer el siguiente experimento y me cuentas q te sale?: Desde desde : http://store.company.com/dir/page.html haces una peticion a un archivo xml q se encuentre en por ejemplo:
http://store.company.com/dir2/ejemplo.xml y lo parseas. Esto no deberia de darte ningun problema. (te daba success)

A continuacion haz el mismo experimento xo asignale document.domain con el valor company.com(q es el valor correcto de domain), a ver si la prueba tiene exito.

Ante todo muchas gracias por tu interes!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:06.