Volevo fare un wiki comunitario riguardante le politiche della stessa origine di HTML/JS per sperare di aiutare chiunque cerchi questo argomento. Questo è uno degli argomenti più ricercati su SO e non c'è un wiki consolidato per esso, quindi eccomi qui :)
La politica della stessa origine impedisce che un documento o script caricato da una origine di ottenere o impostare proprietà di un documento da un'altra origine. Questa politica risale fino indietro a Netscape Navigator 2.0.
Si prega di mantenere gli esempi verbosi e preferibilmente anche di linkare le vostre fonti.
L'impostazione di un semplice reverse proxy sul server, consentirà al browser di utilizzare percorsi relativi per le richieste Ajax, mentre il server fungerà da proxy per qualsiasi posizione remota.
Se si usa mod_proxy in Apache, la direttiva di configurazione fondamentale per impostare un reverse proxy è il ProxyPass
. In genere si usa come segue:
ProxyPass /ajax/ http://other-domain.com/ajax/
In questo caso, il browser sarebbe in grado di richiedere /ajax/web_service.xml
come URL relativo, ma il server lo servirebbe agendo da proxy a http://other-domain.com/ajax/web_service.xml
.
Una caratteristica interessante di questo metodo è che il reverse proxy può facilmente distribuire le richieste verso più back-end, agendo così come un load balancer.
Personalmente, window.postMessage
è il modo più affidabile che ho trovato per i browser moderni. Devi fare un po' più di lavoro per assicurarti di non lasciarti aperto agli attacchi XSS, ma è un compromesso ragionevole.
Ci sono anche diversi plugin per i popolari toolkit Javascript là fuori che avvolgono window.postMessage
che forniscono funzionalità simili ai vecchi browser utilizzando gli altri metodi discussi sopra.