2008-11-27 14 views
14

¿Hay alguna manera de usar XMLHttpRequest en combinación con otros dominios?¿Puedo hacer una XMLHttpRequest a otro dominio?

Me gustaría analizar algunos xml de Google sin tener que usar un servidor, por lo que su ejecución es minimalista y compleja.

var req = getXmlHttpRequestObject(); 
... 
req.open('GET', 'http://www.google.de/ig/api?weather=Braunschweig', true); 
     req.setRequestHeader("Content-Type","text/xml"); 
     req.onreadystatechange = setMessage; 
     req.send(null); 

Hacerlo en el lado del servidor no es una opción, al menos, entonces no tendría que preguntar

Respuesta

10

No, no en este momento. Creo que he leído que los planes/diseños están en proceso para grupos de estándares para el futuro, por lo que podemos hacer esto de forma segura.

Las vulnerabilidades de scripts en sitios cruzados serían muy comunes.

JSONP es una posible solución si la API de otros sitios es compatible.

+0

jsonp es la palabra mágica , +1 –

2

Es un problema de seguridad, la mayoría (¿todos?) Los navegadores no le permiten hacer eso. Puede usar un IFrame oculto para hacer su búsqueda, pero es lo suficientemente complejo como para usar un servidor (o cambiar a otro idioma, si no tengo que ejecutarlo en un navegador)

+0

Incluso con un Iframe oculto, aún no puedes obtener los contenidos de algo que es de otro dominio. –

0

Eso no es posible debido al SOP (Política de Mismo Origen) que el navegador tiene actualmente para restringir los ataques XSS.
Tendrá que usar un script del lado del servidor (PHP o algo así).

0

Puede intentar hacer algo en el servidor. Entonces, en su aplicación, realiza la solicitud al sitio remoto obteniendo el resultado y devolviéndolo a su cliente. La llamada AJAX solo está llamando a su propio servidor y funciona.

+1

¿No has leído mi descripción? – Thomaschaaf

0

Es posible hacer un XHR a otro dominio con HTML5.You también puede hacer diversa petición protocolo con XHR cuando se comunica con HTTP a otro sitio web.

1

No se puede hacer una solicitud de dominio cruzado, p. Ej. de example1.com a example2.com a través de XMLHttpRequest o jQuery (que es un contenedor de XMLHttpRequest) debido a un problema de seguridad en el lado del cliente (navegador). Esto se puede implementar de manera efectiva en un navegador moderno compatible con HTML5 a través de CORS (intercambio de recursos de origen cruzado, que no puede estar disponible en todos los exploradores de clientes. Por lo tanto, la solución es insertar etiquetas de script en example1.com de example2.com, y esta solución es conocida como JSON-P (JSON con relleno), el nombre podría ser engañoso ya que los datos pueden estar en cualquier formato servido por el servidor (example2.com). Su código de implementación se da en este enlace http://newtechinfo.net/jsonp-for-cross-domain-ajax/

Cuestiones relacionadas