Ficando em torno de política de mesma origem em javascript sem scripts do lado do servidor
-
20-09-2019 - |
Pergunta
Eu tenho um ambiente que não permite o scripting do lado do servidor realmente (é extremamente difícil de obter um script instalado no servidor).Eu tentei usar um iframe para violar javascript mesma origem poilcy;no entanto, isso não funcionou.Existem outras soluções eu não estou ciente de?
Obrigado!
Solução
Como David Dorward mencionado, JSON-P é o mais simples e mais rápido;no entanto, há um outro truque, especificamente usando dois iframes.
Dois contornar este problema sem o uso de JSONP, você pode fazer o seguinte.Esta técnica pressupõe que você tenha algum tipo de desenvolvimento o acesso à página principal.
Existem três páginas em dois domínios/sites.
- Página principal
- Conteúdo da página
- Cross-domain comunicação página (aka "xdcomm")
Páginas do pai e xdcomm páginas hospedadas no mesmo domínio, o conteúdo da página está hospedada em qualquer outro domínio.A página de conteúdo é incorporado como um iframe na página principal e o xdcomm página é incorporado como um iframe oculto na página de conteúdo.
O xdcomm página contém um script muito simples que detecta OBTER parâmetros de seqüência de consulta, analisa que a seqüência de caracteres para method
e args
variáveis (onde args
é um codificados no formato JSON de seqüência de caracteres) e, em seguida, executa o método especificado com os argumentos especificados na página principal.Um exemplo pode ser visto aqui (ver código-fonte).
Apesar de JavaScript Política de Mesma Origem restringe o código em um domínio acessem o de outro, não importa se os domínios são aninhados uns dentro dos outros (domínio, aninhado dentro do domínio B, aninhada dentro de Um domínio).
Então, em poucas palavras, o conteúdo da página, envia mensagens para a página principal via xdcomm página alterando a fonte do iframe para algo como http://domaina.com/xdcomm.html?src=foo&args=[1,2,3,4]
.Isto seria equivalente a executar foo(1,2,3,4)
na página principal.
Também, saber que já existem bibliotecas que ajudá-lo com isso, como easyxdm.O que eu já expliquei aqui é a base de uma das técnicas que eles usam, e embora possa não ser tão chique, é, certamente, um pleno funcionamento e leve implementação.
Outras dicas
Espero não, pois seria um buraco de segurança! :)
Mas se seus dois sites são subdomínios no mesmo domínio, talvez document.Domain pode ajudar.