Formas de contornar a política da mesma origem
A mesma política de origem
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.
Quais são algumas das suas formas favoritas de contornar as políticas de mesma origem?
Por favor, mantenha exemplos verbosos e, de preferência, ligue também as suas fontes.
150
3
**O método de Reverse Proxy***
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:
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 parahttp://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.
Eu uso o JSONP.
Basicamente, você adiciona
na sua página.
some_func() deve ser chamado para que você seja notificado de que os dados estão dentro.
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.