alternativa para JavaScripting entre domínios?
-
06-07-2019 - |
Pergunta
Atualmente estou contando com um script de proxy para lidar com este problema de política única origem. é lento, e cria sobrecarga. Para não mencionar, javascript não é processado.
Existe uma alternativa a trabalhar lá fora?
Solução
Oh querida, eu acho que a solução que você está procurando com iframes. No entanto, a abordagem iframe é tanto um compromisso mental e técnica. Sugiro que comece com este guia:
comunicação entre domínios com iframes
A abordagem alternativa é obter dados de outro servidor de forma assíncrona usando tags de script e json:
<script src="http://remotesite.com/path/to/script/blah.js"></script>
Você pode criar um novo elemento tag SCRIPT para passar e dados de carga e acréscimo para DOM ou inserir a marcação em um elementos innerHTML.
Eu tenho certeza que você pode encontrar alguns exemplos detalhados e formas de implementar, mas uma coisa que você deve manter uma faixa de com o novo método de script está adicionando tantos tot ele DOM. Esta ajuda força e fornecer um ponto de partida para você:
function require (url, callback) {
if (!isScriptLoaded(url)) {
document.write('<script src="' + url + '" type="text/javascript" charset="utf-8"><\/script>');
if (callback) {
callback();
}
}
}
function isScriptLoaded(src) {
var scriptsLoaded = {};
var scriptTags = document.getElementsByTagName("script");
for (var i = 0, script; script = scriptTags[i]; i++) {
if (script.src) {
scriptsLoaded[script.src] = 1;
}
};
if (scriptsLoaded[src]) {
return true;
}
return false;
}
(não testado, mas deve trabalho!)
De qualquer maneira -. Boa sorte
Outras dicas
Se você pode fornecer um nome de retorno de chamada como um parâmetro para o serviço que fornece o código JavaScript em questão, então você pode anexar uma tag script para seu documento, com um apontador atributo src
para o serviço de chamada. Caso contrário, você está sem sorte.
Use um window.postMessage(message, origin)
iframe e tentar (seria parent.postMessage
do iframe e iframeElement.contentWindow.postMessage
da página superior) para todos os mais recentes dos principais navegadores (Firefox, IE, Safari, Chrome, etc.) e mudando / window.name
polling para o velho browsers.
JSON-P é praticamente ideal para este tipo de coisa. Se você estiver usando jQuery, ou bibliotecas JavaScript semelhantes, seu trabalho é ainda mais fácil:
http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback
É claro que vai depender exatamente o que você está tentando fazer que irá determinar se deve usar JSON-P, iframes escondidos, postMessage, proxies em Flash, ou qualquer outra solução exótica.
Se você controla ambos os domínios e só se preocupam com o Firefox 3.5+, você pode usar o XMLHttpRequest objeto e configurar permissões com Controle de Acesso .