Manipular formulários em diferentes domínios através de uma única página com IFRAMEs

Olá pessoal,

Estou quebrando a cabeça aqui ao tentar solucionar o problema de interação entre páginas em um iframe que possa manipular uma a outra em diferentes domínios.

Por exemplo:

Tenho uma página no domínio A que tem um formulário de cadastro e na outra página que esta em um domínio B tenho um BUTTON que tem como função preencher o formulário que está na página do domínio A. Isso na funfa.

Quando as duas páginas estão em um mesmo domínio funciona certinho, agora quando chamo a mesma página, só que de outro domínio não funfa. Andei lendo na net que isso é uma questão de segurança dos navegadores que fazem esse bloqueio, chamado CROSS-DOMAIN.

Andei lendo que existe forma de manipular o CROSS-DOMAIN para chegar ao resultado esperado, a questão é que eu não consegui fazer isso funcionar, mesmo após muita procura e testes.

Abaixo deixo o código para que possa ficar mais claro a minha dúvida:

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastro</title>
</head>

<body>
<iframe name="top" src="Top-Frame.html" width="100%" height="550" ></iframe>
<iframe name="botton" src="Botton-Frame.html" width="100%" height="50" ></iframe>
</body>
</html>

Top-Frame.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<form>
<input name="nome" id="nome" type="text" />
<input name="sobreNome" id="sobreNome" type="text" />
</form>
</body>
</html>

Botton-Frame-html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<script language=javascript>
function inserir(){

        obj1 = parent.frames['top'].document.forms[0].nome;
	    obj2 = parent.frames['top'].document.forms[0].sobreNome;
		
        obj1.value = "Fabio";
        obj2.value = "Dias";

}
</script>

<input type="button" value="Inserir" onClick="inserir();">

</body>
</html>

Quando chamo a página Top-Frame.html de outro domínio não funciona. Alguem podria me dar uma luz?

Olá pessoal,

Pesquisando sobre o assunto descobri uma forma de solucionar o problema.
Utilizando o postMessage é possível inserir dados em um formulário de outro domínio.

Veja o código:

Em localhost tenho o index.html

<html>
<body>
<form id="the-form" action="/">
	<input type="text" id="my-message" value="Your message" size="30">
	<input type="submit" value="Postar Mensagem">
</form>

<iframe id="da-iframe" src="http://www.myDomain.com/formulario.html"></iframe>

<script>
window.onload = function () {
	var iframeWin = document.getElementById("da-iframe").contentWindow,
		form = document.getElementById("the-form"),
		myMessage = document.getElementById("my-message");

	myMessage.select();	

	form.onsubmit = function () {
		iframeWin.postMessage(myMessage.value, "*");
		return false;
	};
};
</script>
</body>
</html> 

e no meu servidor tenho o formulario.html

<form name="inp">
<input name="campoInput" type="text" value="Esperando a nova mensagem" size="30">
</form>

<script>
function displayMessage (evt) {
	var message = evt.data;
	
	document.forms["inp"].campoInput.value = message;	
}

if (window.addEventListener) {
	// For standards-compliant web browsers
	window.addEventListener("message", displayMessage, false);
}
else {
	window.attachEvent("onmessage", displayMessage);
}

</script>

Com esse novo teste consegui inserir dados em um formulário de outra página. O problema é que na página que esta no servidor também deve ter um script com um Listener aguardando o evento. Nesse exemplo possuo acesso ao servidor, mas se eu quiser manipular um formulário, dessa mesma forma, só que dessa vez em uma página que esta em um servidor que eu não tenho acesso, como eu faria?

Alguém pode me ajudar?