Pregunta

Yo entiendo (creo) que los objetos XMLHttpRequest se adhieren a la política "del mismo dominio". Sin embargo, quiero crear un archivo sencillo (POC) html locales que descarga XML de un servidor web y hace algo con él (vamos a empezar con un simple "alerta ()").

¿Es posible? ¿Necesito una opción especial de configuración de Firefox?

El servidor desde el que estoy tratando de descarga es no bajo mi control (en realidad es una API de Google).

Mi sencilla intento es el código de la página de Mozilla "Uso de XMLHttpRequest" . Se devuelve un error que no entiendo muy bien el método de "enviar".

exención de responsabilidad:. Soy sobre todo un C / C ++ Developer - nunca ha hecho ningún tipo de programación seria JS, nunca había probado el uso de estas API

¿Fue útil?

Solución

XMLHttpRequest realidad se adhiere a una aplicación más estricta de la misma política de dominio: mientras que se puede establecer la propiedad document.domain para autorizar JavaScript sirve a partir de dos subdominios para hablar unos con otros, no se puede hacer eso con XMLHttpRequestObject. En su caso, ir a un dominio completamente diferente, no podía hacer eso con JavaScript tampoco.

Hay un par de opciones. En primer lugar, se puede utilizar un proxy inverso para que parezca que el sitio externo es un subdominio de su sitio. Echar un vistazo a mod_proxy de Apache, en particular, ProxyPassReverse

Otra alternativa es la de devolver los datos como un objeto JSON:

Otros consejos

Si el XML que se está tratando de recuperar es devuelto por una de las API de JS de Google, entonces no hay necesidad de XmlHttpRequest (ya que sólo se puede utilizar en el mismo dominio que la página anway).

Así que en el caso de utilizar una API de Google, tales como los mapas de uno, por lo general comienzan añadiendo una referencia a su API común en algún lugar de su página:

<script type="text/javascript" src="http://www.google.com/jsapi?key=your_google_api_key"></script>

A continuación, agregue una referencia a la API (s) específica que va a utilizar a su página:

<script type="text/javascript">google.load("maps", "2");</script>

Ahora se puede llamar a las distintas funciones proporcionadas por esa API:

<script type="text/javascript">
  function initialize() {
    var map = new google.maps.Map2(document.getElementById("map"));
    map.setCenter(new google.maps.LatLng(41.86, 87.68), 13);
  }
  google.setOnLoadCallback(initialize);
</script>

No se requiere XmlHttpRequest:)

Puede utilizar JSONP para hacer esto. Lo hago aquí usando jQuery y PHP. Básicamente yo uso el proxy PHP para envolver la respuesta de JSON jQuery por lo que puede manejarlo. Es en BSD.

Alternativamente intentar usar IE8. Si está ejecutando desde el disco y no un sitio web IE8 ignorará todas las restricciones normales de dominios y obtener los datos que desea.

Con jQuery (y, presumiblemente, XHR, pero trato de no usarlo directamente) que puede hacer feliz solicitudes entre dominios, siempre y cuando no se especifica cabeceras inusuales o métodos no-get. Si desea utilizar estos, debe tener el control del servidor para permitir solicitudes OPCIONES.

https://developer.mozilla.org/En/HTTP_access_control para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top