Управление доступом к внешним URL-адресам

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Выполнение внешних сценариев и доступ к внешним URL-адресам (через HTTP-адреса, ссылки «mailto:» и т. д.) осуществляется с помощью следующих API-интерфейсов.

  • функция flash.system.fscommand();

  • метод ExternalInterface.call();

  • функция flash.net.navigateToURL().

Для содержимого, загруженного из локальной файловой системы, вызовы этих методов успешны, только если код и содержащая веб-страница (если таковая имеется) находятся в локальной доверенной изолированной программной среде или изолированной программной среде приложения AIR. Вызовы этих методов не выполняются, если содержимое находится в локальной изолированной программной среде файловой системы или с сетевым подключением.

Для содержимого, которое не загружено локально, все эти API-интерфейсы могут взаимодействовать с веб-страницей, в которую они встроены, в зависимости от значения параметра AllowScriptAccess, который описывается ниже. Функция flash.net.navigateToURL() также может взаимодействовать с любым открытым окном или фреймом обозревателя, а не только со страницей, в которую встроен SWF-файл. Дополнительные сведения об этой возможности см. в разделе «Использование функции navigateToURL()».

Параметр AllowScriptAccess в HTML-коде, который загружает SWF-файл, управляет возможностью доступа к внешним URL-адресам через SWF-файл. Этот параметр нужно задать внутри тега PARAM или EMBED. Если для параметра AllowScriptAccess не задано значение, SWF-файл и HTML-страница могут взаимодействовать, только если находятся в одном и том же домене.

Параметр AllowScriptAccess может иметь одно из трех возможных значений: "always", "sameDomain" или "never".
  • Если параметр AllowScriptAccess имеет значение "always", SWF-файл может обращаться к HTML-странице, в которую он встроен, даже если он находится в другом домене.

  • Если параметр AllowScriptAccess имеет значение "sameDomain", SWF-файл может обращаться к HTML-странице, в которую он встроен, только если они находятся в одном домене. Это значение используется для параметра AllowScriptAccess по умолчанию. Используйте эту настройку или не задавайте никакого значения для AllowScriptAccess, чтобы SWF-файл из одного домена не мог обращаться к сценарию HTML-страницы из другого домена.

  • Если свойство AllowScriptAccess имеет значение "never", SWF-файл не может обращаться ни к каким HTML-страницам. Это значение не используется, начиная с выпуска Adobe Flash CS4 Professional. Это не рекомендуется и не является необходимым, если вы не размещаете недоверенные SWF-файлы на собственном домене. Если возникла необходимость размещения недоверенных SWF-файлов, компания Adobe рекомендует создать отдельный субдомен, на который следует помещать все недоверенное содержимое.

Ниже приводится пример настройки тега AllowScriptAccess HTML-страницы, которая разрешает доступ к внешним URL-адресам другого домена.

<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> 

Использование функции navigateToURL()

Помимо обеспечения безопасности с помощью описанного выше параметра allowScriptAccess, функция navigateToURL() имеет дополнительный второй параметр — target. С помощью параметра target можно указать имя окна или фрейма HTML-страницы, которому требуется отправить URL-запрос. К таким запросам применяются дополнительные ограничения по безопасности, которые варьируются в зависимости от того, используется метод navigateToURL() со сценарием или без него.

Если в метод включен сценарий, например navigateToURL("javascript: alert('Hello from Flash Player.')"), применяются следующие правила.

  • Если SWF-файл находится в локальной доверенной изолированной среде, запрос выполняется успешно.

  • Если целью является HTML-страница, в которую встроен SWF-файл, применяются правила для параметра allowScriptAccess, описанные выше.

  • Если цель включает содержимое, загруженное из домена SWF-файла, запрос выполняется успешно.

  • Если цель включает содержимое, загруженное из другого домена, и не выполнены предыдущие два условия, запрос не выполняется.

Если в метод не включен сценарий (например, ссылки HTTP, HTTPS и mailto:), запрос не выполняется при наличии всех перечисленных ниже условий:

  • в значении параметра target присутствуют специальные ключевые слова "_top" или "_parent" и

  • SWF-файл встроен в веб-страницу, размещенную на другом домене, и

  • SWF-файл встроен с использованием параметра allowScriptAccess, для которого не задано значение "always".

Дополнительные сведения

Дополнительные сведения о доступе к внешним URL см. в описании следующих элементов в cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform: