Eu queria fazer um wiki comunitário sobre as políticas HTML/JS same-origin para, esperançosamente, ajudar qualquer um que procure por este tópico. Este é um dos tópicos mais pesquisados em SO e não há wiki consolidado para ele, então aqui vou eu :)
A mesma política de origem impede uma documento ou script carregado a partir de um origem da obtenção ou definição propriedades de um documento de outro origem. Esta política data até ao fim. de volta ao Netscape Navigator 2.0.
Por favor, mantenha exemplos verbosos e, de preferência, ligue também as suas fontes.
A configuração de um simples proxy reverso no servidor, permitirá ao navegador usar caminhos relativos para os pedidos Ajax, enquanto o servidor estaria agindo como um proxy para qualquer local remoto.
Se utilizar mod_proxy no Apache, a diretiva de configuração fundamental para configurar um proxy reverso é o `ProxyPass'. Ela é tipicamente utilizada da seguinte forma:
ProxyPass /ajax/ http://other-domain.com/ajax/
Neste caso, o navegador seria capaz de solicitar /ajax/web_service.xml
como uma URL relativa, mas o servidor serviria isso agindo como um proxy para http://other-domain.com/ajax/web_service.xml
.
Uma característica interessante deste método é que o proxy reverso pode facilmente distribuir pedidos para múltiplos back-ends, agindo assim como um equilibrador de carga.
Pessoalmente, window.postMessage
é a forma mais confiável que a I'encontrei para os navegadores modernos. Você tem que fazer um pouco mais de trabalho para ter certeza de que você'não está se deixando aberto a ataques XSS, mas isso'é uma troca razoável.
Existem também vários plugins para os populares conjuntos de ferramentas Javascript que envolvem o `window.postMessage' que fornecem funcionalidades similares aos navegadores mais antigos, utilizando os outros métodos discutidos acima.