Tentativa de JavaScript inseguro para acessar o quadro com URL

9

Eu tenho uma página com um iframe e um Javascript do Iframe que acessam uma função do frame pai. As páginas estão no mesmo servidor (não é cross-domain scripting), eu não tenho nenhum problema com FF e IE, mas quando eu uso no Chrome eu tenho a mensagem abaixo.

  

Tentativa de JavaScript inseguro para acessar o frame com URL    link   de quadro com URL    link .   Domínios, protocolos e portas devem corresponder.

Como posso resolver este problema? Eu pesquiso pelo google desde 4 horas. Espero que alguém possa me ajudar.

EDIT: código

Este é o JavaScript na página do iframe. Este JavaScript chama uma função Javascript de frame pai "setUfficioPostale". Este é o ponto em que o Chrome me fornece o erro "Acesso inseguro ...".

<script>
    window.parent.setUfficioPostale(map);
</script>

Este é o Javascript no quadro pai para o envio de formulários. Isso é para enviar um formulário oculto com parâmetros ocultos para uma página carregada no iframe.

function onAltroUfficioClick(){
    document.getElementById("hiddenParams").submit();
    $('#framePosteMaps').show();
}

Esta é a definição de iframe na página principal.

<iframe id="framePosteMaps" scrolling="no" name="framePosteMaps"></iframe>

Este é o formulário com o atributo target para enviar parâmetros para a página iframe.

<form id="hiddenParams" target="framePosteMaps" action="http://samedomain:51700/irj/servlet/prt/portal/prtroot/TestFrameRC.SimPerProxy" method="POST">
    <input type="hidden" name="distanza" value="10">
    <input type="hidden" name="cliente" value="Retail">
    ....................
</form>
    
por jRicca 06.09.2011 в 12:59
fonte

3 respostas

2

O Chrome não permite que você faça isso. O código do Iframe não pode acessar o código pai.

    
por madeinstefano 25.10.2011 / 21:17
fonte
2

Primeiro, verifique se ambas as páginas estão sendo referenciadas usando o atributo SRC do iframe exatamente da mesma maneira, quero dizer:

http://samedomain:51700/irj/
http://samedomain:51700/irj/

porque é possível que, mesmo que estejam rodando na mesma máquina, um desses iFrames seja chamado assim:

http://localhost:51700/irj/

e o outro:

http://MachineId:51700/irj/

ou qualquer outra combinação.

Você pode verificar isso inspecionando o código com as ferramentas do desenvolvedor em todos os navegadores modernos.

O Chrome permite que você chame a função dos pais se eles estiverem no mesmo domínio (eu faço isso todos os dias), portanto, não deve haver nenhum problema.

Eu uso essa função para acessar os iFrames das crianças:

var getIframe = function (id) {
    if ($.browser.mozilla) return document.getElementById(id).contentWindow;
    return window.frames[id];
};

e apenas "parent.yourParentFunction ()" quando você quer acessar uma função no pai.

Verifique se a função do pai está atribuída ao objeto Window (namespace global)

Boa sorte com isso: -)

    
por ChangePictureWeekly 14.11.2011 / 15:05
fonte
1

O quadro pai pode ter definido um valor document.domain diferente de "samedomain". Atualize a propriedade document.domain no iframe js para o valor definido no quadro pai e isso deve funcionar.

    
por X_Cli 13.04.2012 / 11:45
fonte