Política de Mesma Origem JavaScript - Como ela se aplica a diferentes subdomínios?
-
23-09-2019 - |
Pergunta
Como a Política de Mesma Origem se aplica aos dois domínios a seguir?
http://servidor1.MeuDomínio.com
Posso executar JS em uma página hospedada no servidor1, se o conteúdo for recuperado do servidor2?
editar de acordo com a resposta de Daniel abaixo, posso incluir scripts entre diferentes subdomínios usando o <script>
tag, mas e as solicitações assíncronas?E se eu baixar um script do server2 para a página hospedada no server1.Posso usar o script para me comunicar de forma assíncrona com um serviço no server2?
Solução
Você só pode incluir scripts entre diferentes subdomínios usando o <script>
tag, pois está isento da política.
Usando http://www.example.com/dir/page.html
como fonte (de Wikipédia):
Compared URL Outcome Reason
---------------------------------------------------------------------------------------------
http://www.example.com/dir/page.html Success Same protocol and host
http://www.example.com/dir2/other.html Success Same protocol and host
http://www.example.com:81/dir2/other.html Failure Same protocol and host but different port
https://www.example.com/dir2/other.html Failure Different protocol
http://en.example.com/dir2/other.html Failure Different host
http://example.com/dir2/other.html Failure Different host (exact match required)
http://v2.www.example.com/dir2/other.html Failure Different host (exact match required)
ATUALIZAR:
Posso usar o script para comunicar assíncrono com um serviço no Server2?
Sim, você pode com JSONP, que aproveita a política aberta para <script>
tags para recuperar JSON de outras origens.
Você também pode considerar o uso de um proxy reverso, conforme descrito na seguinte postagem do Stack Overflow:
Outras dicas
Claro, você pode executar qualquer script que você insira em seu INVOLGUE DE SEMPRE QUE VIVE. Pense em como inserir um mapa do Google em sua página.
O que sua descrição é um padrão chamado JSONP. Onde um servidor em outro host retorna um script que você insere na sua página e o script chama uma função em sua página com os argumentos de resposta.