не могу заставить его работать: crossdomain.xml и Flash - PullRequest
3 голосов
/ 28 июня 2010

У меня есть (самостоятельно созданная) демонстрация SWF с триггером кнопки getUrl ('SampleTargetPage.html') *

Теперь я хочу разместить SWF на нашем cdn на cdn.example.com, пока моя html-страницарасположен на www.example.com

Более структурированный:

www.example.com/test.html
cdn.example.com/someflash.swf
cdn.example.com/crossdomain.xml

Я подумал, что было бы достаточно предоставить crossdomain.xml на cdn.example.com, чтобы ссылки работали.Но: похоже, что плагин Flash вообще никогда не запрашивает crossdomain.xml!

Теперь, есть ли что-то, что я должен добавить в сам SWF, чтобы это работало?Большое спасибо!

edit: мне нужно использовать Security.loadPolicyFile?edit: Может быть, мне вообще не нужен crossdomain.xml, потому что все находится под * .example.com?

Ответы [ 2 ]

5 голосов
/ 29 июня 2010

Нашел проблему! Решением было установить для allowcriptaccess значение «всегда» в параметрах флэш-памяти:

 allowscriptaccess : 'always'

Это справочная информация о проблеме:

Начиная с Flash Player 9, вызовы getURL (или navigateToURL), затрагивающие "_self", "_parent" или "_top", рассматривались как взаимодействие с HTML-страницей хостинга. Начиная с Flash Player 9, обновление 3, затрагиваются все вызовы целей, отличных от _blank. Это сделано для предотвращения повторного перемещения ненадежных SWF-файлов, встроенных в HTML-страницу, на страницу браузера (или фрейм внутри этой страницы) без предупреждения пользователя о том, что он теперь посещает другой сторонний веб-сайт. Он также обеспечивает ограничения междоменных сценариев во всех html-фреймах.

Чтобы защитить HTML-страницы от ненадежных SWF-файлов, Flash Player поддерживает параметр HTML AllowScriptAccess в тегах и, отображающих содержимое Flash. AllowScriptAccess может иметь три значения:

  • «всегда»: разрешает SWF-файлу взаимодействовать со страницей HTML во всех случаях.
  • "sameDomain": разрешает SWF-файлу взаимодействовать со страницей HTML, только если их домены точно совпадают. По умолчанию шаблоны публикации HTML в приложении Adobe Flash Authoring выводят HTML, который задает значение AllowScriptAccess = "sameDomain", поскольку это часто является требуемым поведением безопасности.
  • «никогда»: полностью предотвращает взаимодействие SWF-файла со страницей HTML.

Вызов getURL (или navigateToURL) теперь попадает под контроль параметра AllowScriptAccess. Другими словами, AllowScriptAccess должен быть «всегда» или «sameDomain», а домены HTML-страницы и SWF-файла должны точно совпадать. В противном случае вызов getURL (или navigateToURL) завершится неудачей.

Это новое поведение, введенное в Flash Player 9 для соответствия модели безопасности и затрагивающее все версии SWF. Adobe осознает, что это может изменить поведение некоторых носителей SWF, развернутых до выпуска Flash Player 9, и мы приносим извинения за возможные неудобства.

0 голосов
/ 29 июня 2010

Файл crossdomain.xml должен находиться в корне сайта и перечислять все домены, которые имеют доступ к файлам внутри. Вы также можете настроить свой файл, чтобы разрешить все, если хотите.

Обратите внимание, что в приведенном ниже примере вместо поддомена я использовал подстановочный знак (*), чтобы я мог предоставить доступ ко всем поддоменам, входящим в мой основной домен. Первые две записи - это только примеры конкретных внешних сайтов, если вы хотите ограничить это. но вы всегда можете просто сделать . . *, чтобы разрешить все.

Содержимое будет выглядеть так:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="www.siteone.com" />
  <allow-access-from domain="sitetwo.com" />
  <allow-access-from domain="*.mysite.com" />
</cross-domain-policy>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...