Flash Security.AllowDomain () - PullRequest
       6

Flash Security.AllowDomain ()

6 голосов
/ 16 апреля 2010

У меня есть Flash-ролик, загружающий данные с внешнего URL. На самом деле, это баннер для чтения RSS внутри баннера.

Все отлично работает, когда ролик Flash и URL-адрес данных находятся в одном домене. Однако, если Flash-фильм находится в другом домене, включается защита Flash.

В руководстве сказано, что я могу разрешить домен через Security.AllowDomain ()

system.Security.allowDomain("http://www.mydomain.abc/")
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("http://www.mydomain.abc/content.php");

Но когда я встраиваю .swf в страницу HTML, данные не загружаются. Любые советы, как отладить или решить эту проблему?

Ответы [ 3 ]

13 голосов
/ 16 апреля 2010

Я думаю, вы неправильно понимаете цель метода. Как документы : скажем, allowDomain:

Позволяет SWF-файлам файлы в указанном домены обращаются к объектам и переменным в SWF-файле, который содержит вызов allowDomain ().

[...]

Позвонив Security.allowDomain ( "siteA.com"), siteB.swf дает разрешение siteA.swf чтобы написать это.

Итак, вызов, который вы делаете, позволяет swf-файлам на www.mydomain.abc записывать сценарий swf с вызовом. Вы в основном говорите: «Я верю, что они используют меня правильно». Он не позволяет вам делать то, что вы пытаетесь сделать (загружать ресурсы из этого домена).

Нет смысла позволять клиентскому коду просто запрашивать обход междоменной безопасности так, как вы запрашиваете. Если все, что вам нужно сделать, это спросить, зачем вообще иметь правило?

Чтобы сделать то, что вы хотите, вы можете использовать файл crossdomain.xml на www.mydomain.abc или прокси на стороне сервера. По сути, файл crossdomain.xml будет содержать следующую строку:

<allow-access-from domain="www.yourswfdomain.com" />

, где www.yourswfdomain.com - это домен для файла swf. Очевидно, что это решение требует поддержки от www.mydomain.abc.

Yahoo располагает информацией о настройке прокси на стороне сервера. Он нацелен на XMLHttpRequest, но те же принципы применяются к Flash.

3 голосов
/ 29 ноября 2012
system.Security.allowDomain("www.mydomain.abc")

Не добавляйте http://, это домен, а не URL.

3 голосов
/ 16 апреля 2010

Исправлено.В Adobe Docs описан метод создания файла с именем crossdomain.xml в корне mydomain.abc

<?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.domain-of-swf.com" />
</cross-domain-policy>

Не используйте <allow-access-from domain="*" />, посколькуэто позволит любому SWF в Интернете совершать звонки на ваш домен от имени ваших пользователей со всеми файлами cookie, прикрепленными к запросам.Это приведет к утечке личных данных, если ваш домен не хранит такие файлы или не использует куки / HTTP-аутентификацию.

...