Pergunta

Como faço para abrir 'segurança cross-domain', de modo que o JavaScript na página livremente possa comunicar com o SWF, mesmo quando este está hospedado em outro domínio?

Eu tenho certeza que esta comunicação função é bloqueada por padrão, mas brincando com um arquivo chamado "crossdomain.xml" ea função do ActionScript 3: System.security.allowDomain ( "*"). Eu não estou tendo sucesso completo embora, e eu não tenho o discernimento para saber qual é a abertura para o que.

Há outras camadas de segurança escondidas, que eu preciso de pensar nesse cenário?

E estou abrindo meu código para potenciais hackers de alguma forma, fazendo esta instalação?

(e caso você esteja se perguntando: Sim, eu Have para fazer este trabalho em um cenário, onde o html está hospedado em um domínio, o JavaScript é adicionado externamente a partir de outro domínio eo SWF é incorporado pelo JavaScript de um terceiro domínio - não pergunte por que, é muito complicado para explicar. - Eu também gostaria de poder sediar a coisa toda em um domínio)

Foi útil?

Solução

Usando Security.allowDomain("www.example.com") no SWF permitirá JS em uma página de www.example.com para funções de chamada expostos no SWF com ExternalInterface.addCallback(). O domínio e subdomínio deve corresponder exatamente. Usando "*" permitirá que qualquer domínio para se comunicar com o SWF, mas se você tiver um domínio específico, é melhor usá-lo.

Configuração allowScriptAccess para always no HTML incorporar código permitirá que o SWF para chamar funções JavaScript.

Uma coisa que chama muitos desenvolvedores é que o JavaScript não será capaz de chamar funções no SWF até que o SWF é feito o carregamento. Infelizmente, não há nenhum evento baseado em JS que lhe diz quando o SWF está pronto (pelo menos que eu encontrei). O que eu costumo fazer para contornar este problema é chamar uma função JS do SWF imediatamente quando o SWF terminar de carregar a notificar a página que o SWF está pronto.

Há alguma abstração aqui e ali, mas se você der uma olhada no código fonte para YUI Gráficos , você pode ser capaz de descobrir como Yahoo! tem crossdomain comunicação de trabalho JS / SWF.

Outras dicas

Uma coisa que eu gostaria de acrescentar que a resposta anterior: Se você tentar o código acima e ele não funcionar, verifique se o endereço do seu site inclui o "www" ou não. O meu não fez e não funcionou se eu escrevi-o como

Security.allowDomain("www.jeremy-knight.com");

Eu precisava escrevê-lo como:

Security.allowDomain("jeremy-knight.com");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top