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 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 a plataforma Adobe Flash: