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.

**O método de Reverse Proxy***

  • Tipo de método: *Ajax***

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.

Comentários (0)

Eu uso o JSONP.

Basicamente, você adiciona

<script src="http://..../someData.js?callback=some_func"/>

na sua página.

some_func() deve ser chamado para que você seja notificado de que os dados estão dentro.

Comentários (5)

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.

Comentários (0)