Domanda

ho capito (credo) che gli oggetti XmlHttpRequest aderiscono alla politica "dello stesso dominio". Tuttavia, voglio creare un semplice (POC) file HTML locale che scarica XML da un server web e fa qualcosa con esso (cominciamo con un semplice "alert ()").

E 'possibile a tutti? Ho bisogno di una speciale opzione di configurazione di Firefox?

Il server da cui sto cercando di scaricare è non sotto il mio controllo (in realtà è un API di Google).

Il mio tentativo semplice è il codice da pagina di Mozilla "Uso XMLHttpRequest" . Esso restituisce un errore che non capisco dal metodo "invia".

. Disclaimer: Sono principalmente un C / C ++ sviluppatore - qualsiasi seria programmazione JS mai fatto, mai provato ad utilizzare queste API

È stato utile?

Soluzione

XMLHttpRequest realtà aderisce a una molto più severi attuazione della stessa politica di dominio: mentre è possibile impostare la proprietà document.domain per consentire JavaScript servita dalle due sub-domini di parlare con l'altro, non è possibile farlo con XMLHttpRequestObject. Nel tuo caso, andando a un dominio completamente diverso, non si poteva fare con JavaScript sia.

Ci sono un paio di opzioni. In primo luogo, è possibile utilizzare un proxy inverso per far sembrare che il sito esterno è un sottodominio del tuo sito. Date un'occhiata a mod_proxy di Apache, in particolare ProxyPassReverse

Un'altra alternativa è quella di restituire i dati come un oggetto JSON:

Altri suggerimenti

Se l'XML che si sta cercando di recuperare viene restituito da una delle API JS di Google, quindi non c'è bisogno di XmlHttpRequest (dal momento che può essere utilizzato solo sullo stesso dominio come pagina anway).

Quindi, nel caso di utilizzo di un API di Google, come ad esempio le mappe uno, di solito iniziano con l'aggiunta di un riferimento al loro API comune da qualche parte nella tua pagina:

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

Quindi aggiungere un riferimento alla specifica API (s) si prevede di utilizzare per la tua pagina:

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

Ora è possibile richiamare le varie funzioni fornite da tale 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 XmlHttpRequest richiesta:)

È possibile utilizzare JSONP per fare questo. Io lo faccio qui utilizzando jQuery e PHP. Fondamentalmente io uso il proxy PHP per avvolgere la risposta JSON in modo jQuery in grado di gestirlo. E 'sotto BSD.

In alternativa provare a utilizzare IE8. Se si esegue dal disco e non un sito web IE8 ignorerà tutte le restrizioni dominio normali e ottenere i dati desiderati.

Con jQuery (e presumibilmente XHR, ma cerco di non utilizzarlo direttamente) si può tranquillamente fare le richieste cross-domain, a condizione che non si specifica intestazioni insoliti o metodi non-get. Se si desidera utilizzare questi, è necessario avere il controllo del server per abilitare le richieste di opzioni.

https://developer.mozilla.org/En/HTTP_access_control per i dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top