Come specificare un sito Web esterno per XMLHTTPRequest
-
03-07-2019 - |
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.
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: *