Como hacer un Ajax Cross Domain?

Iniciado por Skeletron, 1 Diciembre 2011, 07:24 AM

0 Miembros y 1 Visitante están viendo este tema.

~ Yoya ~

@Skeletron, yo hace tiempo tenia el mismo problema. Tenia que realizar peticiones POST a una web, no quería realizarla desde el lado del servidor ya que estaría utilizando la conexión del servidor y alguno podía aprovecharse de eso para usar toda la conexión.

El problema de Jsonp es que se suele usar en sitios que utilizan una API para sus servicios y el sitio que estaba utilizando no contiene alguna API. Y a la larga no era la mejor solución ya que lo mas seguro estaría siempre en la misma circunstancias y me gusta realizar apps que funcionen SI o SI.

Dure unos días pensando la solución mas eficiente, y concluir que es mejor utilizar PHP como puente/proxy. Aunque al principio me negaba a utilizarla xD.

El código PHP con que realizas peticiones GET/POST lo alojas en el mismo servdidor, a si que se ejecutara al instante.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

EFEX

Cita de: ~ Yoya ~ en  4 Diciembre 2011, 20:07 PM
Dure unos días pensando la solución mas eficiente, y concluir que es mejor utilizar PHP como puente/proxy. Aunque al principio me negaba a utilizarla xD.
El código PHP con que realizas peticiones GET/POST lo alojas en el mismo servdidor, a si que se ejecutara al instante.
Podemos dar esto como la solución ? yo estuve viendo scrips ( unos muy raros  :) ) pero sin resultado sobre megaupload.com.

Pregunta: ¿que protección tiene megaupload para estos casos? nunca vi esto y quisiera tenerlo en cuenta.
GITHUB 

raul338

Y si utilizas Frames? Frames invisibles y obtienes su codigo a travez del innerHTML :P

RaiSe

Hola.

Creo que no se puede hacer una petición ajax a un dominio externo, es una medida de seguridad de los navegadores. Puede que en firefox se pueda desactivar en la configuración, pero siempre a mano. No estoy 100% pero creo que es así, es como intentar modificar la barra de URL del navegador desde javascript para que muestre otro dominio diferente al real, es imposible.

Un saludo.
RaiSe | eNYe-Sec.org

~ Yoya ~

Estas en lo correcto @RaiSe, es una medida de seguridad. Los navegadores no permiten las peticiones hacías dominios del lado del cliente por seguridad.

Tampoco la solución es desactivarlo o activar alguna configuración del navegador. Siempre es mucho mejor optar por la solución mas estable, que funcione SI o SI.

@EFEX, hay scripts que trabajan como dije, utilizan un código PHP como puente para realizar peticiones GET/POST hacia un sitio y recibir información. Otra cosa, en programación no existe la magia, por mas impresionante que sea algo, tiene una lógica.

@raul338, no creo que sea la mejor solución, ya que igual no podrías realizar peticiones POST y tampoco podrías conocer el estatus de la petición, y conocer algun tipo de información que se mandan por las cabeceras HTTP. Te estaría limitando solo a peticiones GET y la forma en que el navegador maneja los frames.

Yo siempre elijo por una solución que cubra todos los campos, la mas estable, que tenga menos requisitos para su uso y la que tenga mucho mejor rendimiento.

saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

RaiSe

Hola de nuevo.

Coincido con las opiniones que ya te dieron, lo correcto sería hacer un AJAX hacia tu servidor y desde ahí leer el HTML del otro sitio. Deduzco que el problema es porque el otro sitio guarda/loggea/bloquea o hace algo con la IP de tu servidor, por lo que necesitas que la petición la haga el cliente. En ese caso igual puedes leer el HTML del sitio remoto desde el cliente con un iframe, y leer el contenido del mismo con javascript. Pero si el problema no tiene nada que ver con la IP es mucho mejor usar la pasarela PHP.

Un saludo.
RaiSe | eNYe-Sec.org

raul338

@Yoya El no necesita hacer peticiones por AJAX, solo necesita obtener el código fuente de megaupload. Por eso dije que puede probar con frames, no se que hará de a partir del código fuente pero bueno :P

Se que en HTML5 aparecen sockets web, podrías probar con eso :P

WHK

Por politicas de seguridad es imposible a menos que megaupload te entregue un json o xml con todo el contenido de esa web, ahi puedes tratar de obtener el contenido con un xmlrcp y content type pero en caso contrario es imposible a menos que encuentres un bug en algún explorador o esperes a que los sockets de html5 sean implementados.

[u]nsigned

Lo dije como 10 respuestas atras, la unica forma es usar un script php como 'proxy'  ;-)

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

Skeletron

No podemos dar como solucionar a enviar REQUEST (POST O GET) a MegaUpload desde PHP, porque MegaUpload cuando recibe 50 peticiones en menos de 30 segundos, bloquea tu IP durante 2 minutos.
Mi sitio web debería enviar unas 10.000 peticiones cada 30 segundos. Ese es el problema.

Raul, no se puede obtener el codigo HTML de un IFRAME (de ninguna manera), ya que es politica de los browsers... Intentalo tu mismo y verás que no podrás