Controle do acesso à URL de saída

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Script e acesso à URL de saída (por meio do uso de URLs HTTP, mailto: etc.) são executados com o uso das seguintes APIs do

  • A função flash.system.fscommand()

  • O método ExternalInterface.call()

  • A função flash.net.navigateToURL()

Para o conteúdo carregado a partir do sistema de arquivos local, as chamadas para estes métodos são bem sucedidas se o código e a página web (se houver uma) estiverem nas áreas de segurança do aplicativo do AIR. Haverá falha em chamadas para esses métodos se o conteúdo estiver na caixa de proteção local com rede ou local com sistema de arquivos.

Para conteúdo não carregado localmente, todas essas APIs podem se comunicar com a página da Web na qual estão incorporados, dependendo do valor do parâmetro AllowScriptAccess descrito a seguir. A função flash.net.navigateToURL() tem a capacidade adicional de comunicação com qualquer janela ou quadro de navegador aberto, não apenas com a página na qual o arquivo SWF está incorporado. Para obter mais informações sobre essa funcionalidade, consulte Uso da função navigateToURL() .

O parâmetro AllowScriptAccess no código HTML que carrega um arquivo SWF controla a capacidade de executar acesso à URL a partir do arquivo SWF. Defina esse parâmetro dentro da tag PARAM ou EMBED. Se nenhum valor estiver definido para AllowScriptAccess , o arquivo SWF e a página HTML poderão se comunicar apenas se os dois forem do mesmo domínio.

O valor do parâmetro AllowScriptAccess pode ser um destes três valores possíveis: "always" , "sameDomain" ou "never" .
  • Quando AllowScriptAccess é "always" , o arquivo SWF pode se comunicar com a página HTML na qual ele está incorporado, mesmo quando o arquivo é de um domínio diferente da página HTML.

  • Quando AllowScriptAccess é "sameDomain" , o arquivo SWF pode se comunicar com a página HTML na qual ele está incorporado apenas quando o arquivo SWF está no mesmo domínio que a página HTML. Esse valor é o padrão de AllowScriptAccess . Use essa configuração, ou não defina um valor para AllowScriptAccess , para evitar que um arquivo SWF hospedado em um domínio acesse um script em uma página HTML proveniente de outro domínio.

  • Quando AllowScriptAccess está definido como "never" , um arquivo SWF não pode se comunicar com nenhuma página HTML. Usar este valor foi algo desaprovado deste o lançamento do Adobe Flash CS4 Professional. Ele não é recomendado e não deveria ser necessário se você não disponibiliza arquivos SWF não confiáveis de seu próprio domínio. Se for necessário servir arquivos SWF não confiáveis, a Adobe recomenda que seja criado um subdomínio diferente e que todo o conteúdo não confiável seja colocado nele.

Este é um exemplo de configuração da tag AllowScriptAccess em uma página HTML para permitir acesso à URL de saída para um domínio diferente:

<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'> 
<param name='AllowScriptAccess' value='always'/> 
<param name='src' value=''MyMovie.swf'/> 
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/> 
</object> 

Uso da função navigateToURL()

Além da configuração de segurança especificada pelo parâmetro allowScriptAccess discutido acima, a função navigateToURL() tem um segundo parâmetro - target . O parâmetro target pode ser usado para especificar o nome de uma janela ou quadro HTML para o qual enviar a solicitação de URL. Restrições de segurança adicionais se aplicam a essas solicitações, e as restrições variarão se navigateToURL() estiver sendo usado como uma instrução de script ou de não script.

Para instruções de script, como navigateToURL("javascript: alert('Hello from Flash Player.')") , as seguintes regras são aplicadas.

  • Se o arquivo SWF for um arquivo confiável localmente, a solicitação terá êxito.

  • Se o destino for a página HTML na qual o arquivo SWF está incorporado, as regras de allowScriptAccess descritas acima serão aplicadas.

  • Se o destino contiver conteúdo carregado do mesmo domínio que o arquivo SWF, a solicitação terá êxito.

  • Se o destino contiver conteúdo carregado de um domínio diferente do arquivo SWF, e nenhuma das duas condições anteriores for atendida, haverá falha na solicitação.

Para instruções de não script (como HTTP, HTTPS e mailto: , haverá falha na solicitação se todas as condições a seguir se aplicarem:

  • O destino é uma das palavras-chave "_top" ou "_parent" e

  • o arquivo SWF é uma página da Web hospedada em um domínio diferente e

  • o arquivo SWF está incorporado com um valor de allowScriptAccess diferente de "always" .

Para obter mais informações

Para obter mais informações sobre acesso de URL externas, consulte as entradas a seguir em Referência do ActionScript® 3.0 para Adobe® Flash® Platform: