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

ajaxRequest.open con URL externa

Estas en el tema de ajaxRequest.open con URL externa en el foro de Frameworks JS en Foros del Web. Buenas, Tengo el siguiente problema. Mismo .js en varios servidores diferentes que llaman con la funcion ajaxRequest.open al mismo .php Este .php esta en un ...
  #1 (permalink)  
Antiguo 31/07/2008, 01:51
 
Fecha de Ingreso: noviembre-2003
Ubicación: Alicante
Mensajes: 111
Antigüedad: 20 años, 5 meses
Puntos: 1
ajaxRequest.open con URL externa

Buenas,

Tengo el siguiente problema. Mismo .js en varios servidores diferentes que llaman con la funcion ajaxRequest.open al mismo .php

Este .php esta en un servidor con una base de datos mysql y su funcion es unicamente meter unos datos que le he pasado previamente por GET.

Problema: Segun la documentación de Ajax. La función ajaxRequest.open por seguridad no permite URLs externas. Por tanto solo me funciona bien cuando el la pagina que hace la operación se encuentra en el mismo servidor que donde esta el .php

¿Sabeis si hay alguna forma u otra funcion de AJAX que haga lo mismo, pero permitiendo URLs externas?

Muchas gracias.
  #2 (permalink)  
Antiguo 31/07/2008, 05:44
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
Respuesta: ajaxRequest.open con URL externa

Hasta el punto que yo se no se pueden hacer peticiones como tu quieres y por el motivo que tu dices, la seguridad.

Imaginate que me haces peticiones a una imagen mia, me consumirias la transfencia dejando tu navegador por las noches.
  #3 (permalink)  
Antiguo 31/07/2008, 05:48
 
Fecha de Ingreso: noviembre-2003
Ubicación: Alicante
Mensajes: 111
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: ajaxRequest.open con URL externa

Gracias por tu respuesta jorgivaz,

La cuestion es que si puede yo llamar a ese .php desde un servidor, incluso con un iframe oculto (emulando la peticion de AJAX) puedo llamar a ese .php y me ejecuta correctamente.

COmo es posible que no halla ninguna forma en AJAX que me permita hacerlo. La solución de los iframes ocultos no me vale por otros motivos, pese a que funcione.
Tiene que haberlaaaa!!

Un saludo!!!
  #4 (permalink)  
Antiguo 31/07/2008, 08:19
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: ajaxRequest.open con URL externa

La solución pasa por simular que los datos son servidos desde el mismo dominio donde se encuentran los procesos ajax, usando un puente creado con lenguaje de servidor que tome el contenido de la página externa y vuelva a servirlos (es decir un proxy). En php por ejemplo, podrías usar alguna de estas opciones:
http://www.disegnocentell.com.ar/new...los.php?id=157

Para aclarar un poco, sucede lo mismo que cuando querés usar javascript en un iframe cuyo src apunta a una url externa: no es posible hacerlo si no volvés a servir el contenido de esa url, pero desde tu dominio. Aquí hay un ejemplo de esto último, que conceptualmente es aplicable a lo que necesitás:
http://www.forosdelweb.com/2510657-post11.html
  #5 (permalink)  
Antiguo 01/08/2008, 01:16
 
Fecha de Ingreso: noviembre-2003
Ubicación: Alicante
Mensajes: 111
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: ajaxRequest.open con URL externa

Gracias por tu respuesta Panino,

Yo no quiero recibir datos, solo enviarlos a un php para que los inserte en una base de datos.

Mi problema es que incluso el .js donde esta el .open de AJAX esta en el servidor de la bbdd y de .php que inserta en la base de datos.

Yo les doy a las paginas el codigo que tienen que insertar antes del </head>

<script language="javascript" src="http://www.urlexterna.com/funcion.js"></script>

y las funciones que pueden usar de js en su pagina.

Pero no tengo acceso a su servidor y por tanto no puedo crear ningun archivo .php que haga de pasarela en sus servidores.

Podrian crearlos ellos pero ya seria bastante más lioso y si hay una solución mas simple seria genial.

Muchas gracias.
  #6 (permalink)  
Antiguo 01/08/2008, 07:53
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: ajaxRequest.open con URL externa

En ese caso, podés usar la solución del iframe que mencionaste o usar otra técnica ajax llamada Inclusión DOM, que sí es crossDomain. Es semejante a la solución del iframe, sólo que en lugar de hacer el request a la página de proceso cambiando el src del iframe, lo que hace es hacer el request mediante un elemento de tipo script, cuyo src apunta a la página de proceso. Recibe como parámetro la url de la página de proceso, a la cual deberás agregarle el querystring con las variables que necesites enviar.
Código PHP:
<script>
function 
adjs(url){
    
oldsc=document.getElementById("old_sc");
       if(
oldsc)
            
document.getElementsByTagName('body')[0].removeChild(oldsc);
    
sc=document.createElement('script');
    
sc.id="old_sc";
    
sc.src=url+'&'+Math.random();
    
document.getElementsByTagName('body')[0].appendChild(sc);
}
</script> 
  #7 (permalink)  
Antiguo 04/08/2008, 02:42
 
Fecha de Ingreso: noviembre-2003
Ubicación: Alicante
Mensajes: 111
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: ajaxRequest.open con URL externa

Muchas gracias Panino,

Me parece excelente idea.

Un saludo.
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 18:29.