| Автор перевода: Майкл "Antares" Клишин | Предыдущая | Следующая |
Flash документ может загружать данные из внешних источников, используя один из следующих методов: XML.load(), XML.sendAndLoad(), LoadVars.load(), LoadVars.sendAndLoad(), loadVariables(), loadVariablesNum(). Также, SWF файл может импортировать общие (shared) библиотеки, определенные в другом SWF файле, во время проигрывания ролика. По умолчанию, данные в SWF ролике, в случае с shared библиотеками, должны находиться в одном домене с файлом, их загружающим.
Чтобы сделать данные в shared библиотеке доступными для SWF файлов в других доменах, используйте файл с кросс-доменными правилами (cross-domain policy file). Файл с кросс-доменными правилами представляет из себя XML файл, который дает возможность серверу "показать", что его данные и документы доступны для SWF файлов, находящихся в указанных в файле с правилами доменах. Любой SWF файл, который находится в домене, указанном в файле с правилами на сервере, будет иметь доступ к файлам и данным на этом сервере.
Когда Flash документ пытается получить доступ к файлу в другом домене, Flash Player автоматически пытается загрузить файл с правилами с этого домена. Если домен, в котором находится Flash документ, включен в файл с правилами, он получает доступ к данным.
Файл с правилами должен иметь имя crossdomain.xml и может находиться в корневом или ином каталоге сервера (в последнем случае необходимо будет указать где при помощи ActionScript, смотри О произвольном расположении файлов с правилами). Файлы с правилами работают только на серверах, взаимодействующих по HTTP, HTTPS или FTP. Файл с правилами зависит от протокола и порта сервера, на котором он находится.
Например, файл с правилами, расположенный по адресу https://www.macromedia.com:8080/crossdomain.xml будет принимать запросы на прочтение, адресованные домену www.macromedia.com по протоколу HTTPS через порт 8080.
Исключением из правил является лишь использование объекта XMLSocket для соединения с сервером в другом домене. В этом случае, HTTP сервер, работающие через 80 порт в том же самом домене, что и сокет-сервер, должен предоставить доступ к файлу с правилами.
XML файл с правилами состоит из одного единственного тэга <cross-domain-policy>, который, в свою очередь, содержит 0, 1 или более тэгов <allow-access-from>. Каждый тэг <allow-access-from> содержит аттрибут domain, определяющий либо точный IP адрес, либо точное имя домена, либо групповой символ, указывающий на любой домен. Групповым символом может быть астерикс (*), соответствующий всем доменам и всем IP адресам, или астерикс с суффиксом, соответствующий всем доменам с таким суффиксам. Суффикс должен начинаться с точки. Однако, группы доменов с суффиксом могут соответствовать доменам, состоящим только из суффикса, без точки. Пример: foo.com есть часть *.foo.com. Групповые символы не разрешается использовать при задании IP адреса.
Если в правиле вы указываете IP адрес, доступ предоставляется только роликам, загружаемым с этого адреса, используя прямое указание IP (например, http://65.57.83.12/flashmovie.swf), но не роликам, загружаемым с указанием имени домена. Flash Player не производит DNS проверок.
Нижеследующий пример показывает файл с правилами, разрешающий доступ Flash роликам, располагающихся на узлах foo.com, www.friendOfFoo.com, *.foo.com и 105.216.0.40, к Flash ролику на foo.com:
<?xml version="1.0"?> <!-- http://www.foo.com/crossdomain.xml --> <cross-domain-policy> <allow-access-from domain="www.friendOfFoo.com" /> <allow-access-from domain="*.foo.com" /> <allow-access-from domain="105.216.0.40" /> </cross-domain-policy>
Вы можете разрешить доступ для роликов, независимо от домена, в котором они находятся:
<?xml version="1.0"?> <!-- http://www.foo.com/crossdomain.xml --> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy>
Каждый тэг <allow-access-from> имеет необязательный аттрибут secure, по умолчанию имеющий значение true. Вы можете установить значение аттрибута равным false, если ваш файл с правилами располагается на сервере, использующем HTTPS, и вы хотите разрешить роликам на серверах, использующих HTTP, получать доступ к файлам на сервере, использующем HTTPS.
Установка аттрибута secure как false сводит на нет безопастность, предоставляемую HTTPS.
Если загружаемый SWF файл получается с HTTPS сервера, а загружающий находится на HTTP сервере, вам необходимо добавить аттрибут secure="false" к тэгу <allow-access-from>, как показано на примере:
<allow-access-from domain="www.foo.com" secure="false" />
Файл с правилами, не содержащий <allow-access-from> тэгов, равносилен его полному отсутствию.
| Посмотреть комментарии LiveDocs | Предыдущая | Следующая | |