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

Petición datos de otro servidor

Estas en el tema de Petición datos de otro servidor en el foro de Frameworks JS en Foros del Web. Hola, ¿Como puedo hacer por AJAX peticiones a otro servidor diferente de donde esta alojada la web? Estoy buscando y no encuentro nada claro, Un ...
  #1 (permalink)  
Antiguo 12/05/2008, 01:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 1 mes
Puntos: 1
Petición datos de otro servidor

Hola,
¿Como puedo hacer por AJAX peticiones a otro servidor diferente de donde esta alojada la web?

Estoy buscando y no encuentro nada claro,
Un saludo
  #2 (permalink)  
Antiguo 12/05/2008, 05:30
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 84
Re: Petición datos de otro servidor

Creo que por seguridad, ajax no permite cargar nada que este fuera de tu dominio :]
__________________
» Presupuesto Pagina Web
  #3 (permalink)  
Antiguo 12/05/2008, 06:50
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 1 mes
Puntos: 1
Re: Petición datos de otro servidor

Y alguna solución para poder hacerlo?
  #4 (permalink)  
Antiguo 12/05/2008, 07:05
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 84
Re: Petición datos de otro servidor

Si es obtener el codigo HTML de una web, puedes hacerlo con PHP aunq hay algunas webs q no permiten hacer eso.

Una vez con el Codigo HTML de la web, ya puedes recorrerlo en busca de lo que necesites...

Es lo unico que se me ocurre :D
__________________
» Presupuesto Pagina Web
  #5 (permalink)  
Antiguo 12/05/2008, 07:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 1 mes
Puntos: 1
Re: Petición datos de otro servidor

gracias miSko...

Yo lo que quiero es darles a los usaurios un enlace .js y de está forma que aparezca en su web los datos de mi base de datos que los obtengo con ajax.

He probado en localhost y funciona pq esta bajo el mismo dominio pero al subirlo a interntet me tira el siguiente error, pq están en dominios diferentes.

Error: uncaught exception: Permiso denegado al llamar al método Location.toString

... sigo luchando
  #6 (permalink)  
Antiguo 12/05/2008, 08:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Petición datos de otro servidor

Hola Agrey,

Lo que tendrías que hacer es usar un Proxy en su servidor local que llame a los datos de tu servicio externo.

Saludos.
  #7 (permalink)  
Antiguo 12/05/2008, 08:13
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 1 mes
Puntos: 1
Re: Petición datos de otro servidor

Hola GatorV,
Gracias por tu respuesta, pero esta opción ya la he probao y tampoco me sirve pq yo ahora si puedo crear un proxy en mi servidor local pero cuando ya la web este operativa no tendré acceso a los servidores de los clientes para crearles un proxy,

...sigo/seguimos luchando
  #8 (permalink)  
Antiguo 12/05/2008, 10:29
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Petición datos de otro servidor

Quizás te pueda ayudar con otras técnicas.
¿Puedes pegar aquí el contenido que devuelve la url que llamas mediante ajax?
¿O puedes pegar esa url aquí?

Un saludo.
  #9 (permalink)  
Antiguo 12/05/2008, 12:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Petición datos de otro servidor

La idea es que sea algo así:
Código:
Servidor Cliente                                        Servidor Web
enlace.js                      ----------------->       original.php
proxy.php
Es decir tu le das dos archivos al cliente, el proxy.php que es el archivo que se comunicara con original.php, y el archivo de enlace.js se comunicara con proxy en su servidor local.

Saludos.
  #10 (permalink)  
Antiguo 12/05/2008, 14:57
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Petición datos de otro servidor

Yo me refiero a que ajax no puede cargar datos de otro servidor pero javascript sí.
El sistema es así:

1.- En el cliente se crea dinámicamente (por medio del DOM) una etiqueta script que carga javascript.

2.- El servidor devuelve javascript, en este caso una llamada a una función existente en el cliente.

Ahí va el código:

http://cliente.com/cliente.php

Código:
<script type="text/javascript">

	function aviso(datos) {
		alert(datos);
		var body = document.getElementsByTagName("body")[0];
		var scr = document.getElementById("scriptTemporal");
		body.removeChild(scr);
	}

	function cargarDatos() {
		var body = document.getElementsByTagName("body")[0];
		var scr = document.createElement("script");
		scr.setAttribute("type","text/javascript");
		scr.setAttribute("src","http://servidor.com/servidor.php");
		scr.setAttribute("id","scriptTemporal");
		body.appendChild(scr);
	}
	
</script>

<input type="button" onclick="cargarDatos()">
http://servidor.com/servidor.php

Código PHP:

<?php
    header
("Content-Type: text/javascript");
    
$datos "hola";
    echo 
"aviso('$datos')";
?>
Lo he probado y funciona. Se entiende, no?
  #11 (permalink)  
Antiguo 12/05/2008, 15:11
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Petición datos de otro servidor

Para explicarme mejor:

la función del cliente cargarDatos genera dentro del body de la página esto:

Código:
<script type="text/javascript" 
	    src="http://servidor.com/servidor.php" 
	    id="scriptTemporal">
</script>
Como ves, no carga un archivo .js si no que carga un .php que devuelve javascript, o sea, que es como cargar un .js generado dinámicamente.

El javascript cargado sólo llama a la función aviso(datos) y le pasa el parámetro que necesita.

Al final la función aviso(datos) muestra los datos recibidos y elimina ese script.

Habrá que mejorarlo/adaptarlo pero funciona.

Saludos
  #12 (permalink)  
Antiguo 12/05/2008, 15:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Petición datos de otro servidor

Muy buena forma de hacer las cosas vengava, y si quiere manipular los datos, lo que podría hacer es regresar los datos en JSON.

Claro esto tiene un problema un poco grave de seguridad (para tu cliente) ya que al ser Javascript lo que se regresa se podría prestar a un ataque XSS.

Saludos.
  #13 (permalink)  
Antiguo 13/05/2008, 01:13
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 21 años, 1 mes
Puntos: 1
Re: Petición datos de otro servidor

GatorV, vengava MUCHÍSIMAS GRACIAS por vuestra ayuda y por la solución que me habeis ofrecido.
  #14 (permalink)  
Antiguo 13/05/2008, 06:30
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 2 meses
Puntos: 1
Re: Petición datos de otro servidor

Gracias GatorV y Agrey.

Por el tema de la seguridad, habría que garantizar al cliente que los datos son de fiar. Aunque eso pasaría también con ajax, no? bueno no, porque los datos son del mismo servidor, pero si en servicios json externos.

También habría que controlar quien accede a los datos de servidor.php, ya que supuestamente eso está hecho para clientes concretos, no? No debería de permitir peticiones de cualquier cliente.

Habría que estudiar si el sistema puede provocar algún problema, pero lo que es la carga de datos remota, ya está solucionado.

Por el tema de JSON, estoy de acuerdo, no he hecho ninguna prueba para este caso porque sólo necesitaba pasar un string o cualquier otra cosa, el tema era cargar algo remoto.

El trabajo con el formato de los datos y la seguridad serían los siguientes pasos a dar.

Un saludo y me alegro de haberte ayudado Agrey.
  #15 (permalink)  
Antiguo 13/05/2008, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Petición datos de otro servidor

La cuestión es por decir si por X o Z razón llegan a hackear la web original, imagínate todas las webs donde usan el servicio remoto tendrían un grave problema de seguridad.. es por eso que yo recomiendo la opción que puse de usar un proxy local con PHP.

Es más seguro, y se puede hacer un buen filtro de datos aunque la web original sea modificada.

Saludos.
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 14:06.