janela pop-up de domínio cruzado com valor de retorno
-
22-07-2019 - |
Pergunta
Esta é a configuração:
Eu tenho dois sites em dois domínios diferentes:
-
www.website1.com
-
www.someotherwebsite.com
Isto é o que eu quero fazer:
-
Quando um usuário está em
www.website1.com
e clica em um link, eu quero uma janela pop-up para mostrarwww.someotherwebsite.com
. -
Quando o usuário clica em um botão na janela pop-up (mostrando
www.someotherwebsite.com
) Eu quero essa janela para perto e têm um valor retornado. -
Eu quero o valor retornado a partir da janela pop-up para ser colocado (em uma div, ou em uma chamada de javascript, ou em algum lugar acessível, como o preenchimento de um campo de formulário) em
www.website1.com
.
Espero que sentido marcas. Eu preciso usar apenas HTML e Javascript, sem bibliotecas externas. Ele também deve trabalhar em navegadores atuais (ou seja, não ser uma coisa HTML5).
Agradecemos antecipadamente a sua ajuda.
Solução
Bem, se você usar um iframe em sua janela pop-up [neste dia de idade gostaria de evitar janelas pop-up como uma praga devido ao pop up bloqueadores]
Com um iframe você pode fazer chamadas entre domínios
Por que você não apenas desenvolver um webservice de A para B e chamá-lo de A? Parece muito mais limpo do que encontrar pequenas fissuras em navegadores para contornar a segurança.
Outras dicas
Você pode postar o valor no contexto de www.someotherwebsite.com volta para uma página especial sobre www.website1.com. Agora você está de volta para o domínio original, que a página leva o valor GET e escreve-o para fora em algum JavaScript. O JavaScript em seguida, atualiza a algum lugar valor no uso opener.document.getElementById janela abridor, ou chama uma função na abertura com algo como opener.document.doSomething (val); que lida com a resposta.
É repleta de erros potenciais (e se o usuário abrir duas cópias da janela? Ou fecha o site original?) E falhas de segurança em potencial, e os navegadores têm uma tendência a reagir mal se você tentar fazer coisas para janelas que don 't existem ou estão em domínios diferentes, mas em um ambiente conhecido ele deve funcionar.