5

Qui è la mia situazione:tra domini XMLHttpRequest

Ho una macchina Webserver, computer client, e una terza macchina che esegue qualche programma che è in ascolto per XMLHttpRequests.

Il client accede al server Web dal computer client, apporta alcune modifiche e quindi fa clic su "Salva". A questo punto, i dati vengono inviati al server Web e alla terza macchina. Tutto questo viene fatto usando l'oggetto Javascript e XMLHttpRequest.

Il post sul server Web funziona correttamente, tuttavia il post sulla Terza macchina non funziona, poiché ha un IP/dominio diverso.

Come posso fare questo lavoro? Client machine -> La terza macchina non funziona, perché è su un dominio diverso Webserver -> La terza macchina non funziona, a causa di problemi del firewall

Tutte le idee sono molto apprezzate!

risposta

3

Quello che stai incontrando è il Same origin policy, non i problemi del firewall.

Se le macchine condividono un dominio di primo livello, è possibile set their document.domain properties to match:

Due siti che condividono un alto livello comune dominio può scegliere di comunicare nonostante in mancanza del controllo "stesso host" di impostando reciprocamente le rispettive proprietà documento. dominio DOM allo stesso frammento di destra a destra di il nome host corrente.

In caso contrario, potrebbe essere necessario configurare il primo ospite a delega la richiesta al altro host.

2

È inoltre possibile utilizzare iframe hack. Un iframe ospitato dal secondo dominio può essere visualizzato in una pagina ospitata dal primo dominio e lo window object per l'iframe sarà accessibile dal contesto della pagina padre.

+1

Questa non sembra una cattiva idea, penso che sia possibile postMessage() tra i frame anche in questo caso. – erikvold

1

Un'altra opzione (che è effettivamente un po 'techie) è utilizzare YQL se i dati non sono sensibili. È possibile utilizzare YQL & JSON-P per recuperare anche i dati da altri domini.

3

È possibile implementare CORS (Cross-Origin Resource Sharing) sul proprio server.

Le versioni correnti dei principali browser desktop lo hanno supportato per un po ', Opera ed Explorer 10 sono gli ultimi ad aggiungere supporto.

Al momento non sono sicuro di quanto CORS sia ampiamente supportato nei browser per dispositivi mobili.