PDA

Просмотр полной версии : Проблемы с loadPolicyFile


usacha
19.10.2010, 16:48
Здраствуйте!

Недавно столкнулсяя с одной проблемой loadPolicyFile - не знаю как побороть.
В документации loadPolicyFile пишут что

With Security.loadPolicyFile(), Flash Player or AIR can load policy files from arbitrary locations, as shown in the following example:

Security.loadPolicyFile("http://www.example.com/sub/dir/pf.xml");


This causes Flash Player or AIR to retrieve a policy file from the specified URL. Any permissions granted by the policy file at that location will apply to all content at the same level or lower in the virtual directory hierarchy of the server.

Т.е. можно загружать кросдомен из поддоменов, а не только из корневого домена, и даже папок.
Попробовал я это сделать...

Security.loadPolicyFile( "http://sub.domain.com/crossdomain.xml" );

кросдомена в указаном месте не было, вернулась ошибка 2048 - Security sandbox violation. НУ и черт с ней. Удалили код пересобрал/перезалил.

И опять та же ошибка (!). В файрбаге вижу что флеш пытаеться тянуть тот кросдомен.
ВТФ?

Пытался руками заставить грузить из корня
Security.loadPolicyFile( "http://domain.com/crossdomain.xml" );

Не помголо. всеравно пытаеться грузить из поддомена.

Как забороть эту гадость? Плеер переставлял. Пересобирал и проверял на других машинах - та же ерунда.

Obi
20.10.2010, 10:35
Флешка закешировалась? Не собралась? Нарисуйте красный прямоугольник в уголке програмно и проверьте, та ли у вас флешка )
У меня, бывало, флекс не хотел собирать swc библиотеку, т.е. как бы собрал, но бинарник старый оставался. Приходилось вручную старй бинарник удалять, чтобы флекс новый скомпилил.

dimarik
20.10.2010, 11:18
Т.е. можно загружать кросдомен из поддоменов, а не только из корневого домена, и даже папок.

Если полиси файл лежит не в корне домена (поддомена), то нужно использовать Security.loadPolicyFile. Естественно, грузить следует из того же домена (поддомена), куда флешка обращается за данными или контентом. Полиси файл действует только в пределах точного совпадения доменов. Т.е. если флешка хочет загрузить данные из http://sub.domain.com/, то именно в этом домене должен располагаться crossdomain.xml. Но никак не в http://domain.com/. Если он находится не в корне домена, то необходимо использовать Security.loadPolicyFile
Например, для файла политик, находящегося в каталоге policy домена sub.domain.com:
Security.loadPolicyFile( "http://sub.domain.com/policy/crossdomain.xml" );
Но в этом случае вы получите доступ на загрузку только из каталога http://sub.domain.com/policy/ и вложенных в него.
Any permissions granted by the policy file at that location will apply to all content at the same level or lower in the virtual directory hierarchy of the server.

Нет обязательной необходимости вызывать загрузку из корня домена, т.к. при отсутствии указаний, флеш-плеер автоматически загрузит файл политик именно оттуда. То, что файл политик скачивается по прямому указанию из корня домена называют предварительной загрузкой политик. Это сделано для того, чтобы ко времени выполнения основного кода политики были доступны. Тем самым избегаем лага на загрузке политик.