Domanda

Quando si utilizza un XMLHTTPRequest in javascript, voglio inviarlo a un sito Web esterno, anziché a quello in cui è ospitato il file .js. Per inviarlo a test.php sul server corrente, userei

request.open("POST", "test.php", true);

ma per il secondo argomento, come posso inviarlo a un altro sito Web. & Quot; example.com/test.php" cerca un file sul server corrente e " http://example.com/test.php " giustifica il fallimento assoluto.

È stato utile?

Soluzione

Non puoi per motivi di sicurezza. Consulta la stessa politica di origine per JavaScript.

Esistono alcune soluzioni alternative che sfruttano i bug del browser o casi angolari, ma non è consigliabile utilizzarli.

L'approccio migliore consiste nell'avere un proxy lato server che riceve richieste Ajax e, a sua volta, invia richieste HTTP ad altri server. Ciò dovrebbe essere implementato con cura disinfettando l'input e inserendo nella whitelist i tipi di richieste inviate e i server contattati.

Altri suggerimenti

Sembra un brutto caso di stessa politica di origine , amico mio:)

Non è possibile (per la maggior parte) utilizzare XmlHttpRequest per ottenere dati da un sito Web esterno. Quello che puoi fare, tuttavia, è creare dinamicamente un tag SCRIPT e fare riferimento a un indirizzo esterno. jQuery lo avvolge funzionalmente come parte della sua gestione ajax.

In effetti puoi. Tuttavia, non in nessun browser.

In Internet Explorer 8.0 è presente XDomainRequest , un oggetto che abilita le richieste tra domini. Dovresti gestire correttamente la richiesta fatta con questo oggetto sul server inviando prima l'intestazione Access-Control-Allow-Origin con " * " o nome di dominio del richiedente.

Dato che stai comunque facendo alcune cose confuse, perché non provi a usarlo prima su IE8?

Se si ha il controllo sul server, è possibile utilizzare questa intestazione nella risposta HTTP, anche se potrebbe non funzionare con tutti i browser.

Access-Control-Allow-Origin: *
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top