Пакет | flash.system |
Класс | public class LoaderContext |
Наследование | LoaderContext ![]() |
Подклассы | JPEGLoaderContext |
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
context
в методах load()
и loadBytes()
класса Loader.
Если SWF-файлы загружаются с помощью метода Loader.load()
, необходимо принять два решения: в какой домен защиты должен быть помещен загружаемый SWF-файл, а также в какой домен приложения в этом домене защиты? Дополнительные сведения об этом см. в информации по свойствам applicationDomain
и securityDomain
.
Если загружается SWF-файл с помощью метода Loader.loadBytes()
, также необходимо выбрать домен приложения как и при использовании метода Loader.load()
. Но нет необходимости указывать домен защиты, поскольку Loader.loadBytes()
всегда помещает загруженный SWF-файл в предназначенный для него домен защиты.
Если вместо SWF-файлов загружаются изображения (JPEG, GIF или PNG), то не требуется указывать ни домен защиты, ни домен безопасности, поскольку эти понятия имеют смысл только применительно к SWF-файлам. Необходимо принять всего одно решение: требуется ли программный доступ к растровому представлению загруженного изображения? Если да, см. свойство checkPolicyFile
.
См. также
Свойство | Определено | ||
---|---|---|---|
applicationDomain : ApplicationDomain = null
Задает домен приложения для применения с методом Loader.load() или Loader.loadBytes(). | LoaderContext | ||
checkPolicyFile : Boolean = false
Указывает, должен ли проигрыватель Flash Player пытаться загрузить файл политики для URL с сервера загружаемого объекта перед началом загрузки самого объекта. | LoaderContext | ||
![]() | constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | |
![]() | prototype : Object [статические]
Ссылка на модель объекта класса или функции. | Object | |
securityDomain : SecurityDomain = null
Задает домен защиты для операции Loader.load(). | LoaderContext |
Метод | Определено | ||
---|---|---|---|
LoaderContext(checkPolicyFile:Boolean = false, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null)
Создает новый объект LoaderContext с заданными параметрами. | LoaderContext | ||
![]() |
Показывает, определено ли заданное свойство для объекта. | Object | |
![]() |
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | |
![]() |
Показывает наличие заданного свойства и его перечисляемость. | Object | |
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object |
applicationDomain | свойство |
public var applicationDomain:ApplicationDomain = null
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Указывает домен приложения для использования в методе Loader.load()
или Loader.loadBytes()
. Используйте это свойство только при загрузке SWF-файлов, записанных на ActionScript 3.0 (но не изображений и не SWF-файлов, записанных на ActionScript 1.0 или ActionScript 2.0).
Каждый домен защиты содержит один или несколько доменов приложений, представленных объектами ApplicationDomain. Домены приложений создаются не в целях защиты; они предназначены для совместного использования объектов программного кода ActionScript. Если загрузка SWF-файла выполняется из другого домена, и его разрешено размещать в отдельном домене защиты, то управлять выбором домена приложений для размещения загружаемого SWF-файла нельзя; и даже если указать какой-либо домен приложений, это будет игнорироваться. Однако, если выполняется загрузка SWF-файла в собственный домен защиты (либо потому, что SWF-файл получен из собственного домена, либо потому, что в него выполняется импорт), то можно управлять выбором домена приложений для загружаемого SWF-файла.
В LoaderContext.applicationDomain
можно указывать домен приложения только из собственного домена защиты. Попытка указать домен приложения из какого-либо другого домена защиты приводит к исключению SecurityError
.
Существует четыре возможных варианта для выбора свойства ApplicationDomain
.
new ApplicationDomain(ApplicationDomain.currentDomain)
. Это позволяет загружаемому SWF-файлу напрямую использовать классы родительского домена, например, используя синтаксис new MyClassDefinedInParent()
. Родительский домен, однако, не может использовать этот синтаксис; если ему требуется использовать классы дочернего домена, необходимо вызывать ApplicationDomain.getDefinition()
для их извлечения. Преимущество такого выбора состоит в том, что если в дочернем домене определяется класс с тем же именем, что у класса, уже определенного в родительском домене, то ошибок не происходит; дочерний домен просто наследует определение такого класса из родительского домена, а конфликтное определение дочернего домена не используется до тех пор, пока либо дочерний, либо родительский домен не вызовет метод ApplicationDomain.getDefinition()
для его извлечения.ApplicationDomain.currentDomain
. Когда загрузка завершена, родительский и дочерний домены могут использовать классы друг друга напрямую. Если выполняется попытка определить в дочернем объекте класс с тем же именем, что и класс, уже определенный в родительском домене, то используется класс родительского домена, а класс дочернего домена игнорируется.new ApplicationDomain(null)
. Это полностью разделяет загружающий и загружаемый домены, позволяя им определять отдельные версии классов с одинаковым именем без конфликтов и пересечений. Единственным способом, которым каждая из сторон может видеть классы другой стороны, является вызов метода ApplicationDomain.getDefinition()
.new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain)
SWF-файл загружается в новый дочерний домен по отношению к родительскому домену родительского домена текущего домена.Когда загрузка завершается, каждой из сторон (загружающей и загружаемой) может потребоваться выполнить поиск собственного ApplicationDomain или ApplicationDomain другой стороны, чтобы вызвать ApplicationDomain.getDefinition()
. Каждая из сторон может извлечь ссылку на собственный домен приложения, используя ApplicationDomain.currentDomain
. Загружающий SWF-файл может извлекать ссылку на домен приложения загружаемого SWF-файла с помощью Loader.contentLoaderInfo.applicationDomain
. Если для загруженного SWF-файла известен способ его загрузки, можно определить путь к объекту ApplicationDomain загружающего SWF-файла. Например, если дочерний объект был загружен принятым по умолчанию способом, он может найти домен приложения, загружающего SWF-файла, используя ApplicationDomain.currentDomain.parentDomain
.
Дополнительные сведения см. в разделе "Класс ApplicationDomain" главы "Системная среда клиента" в книге Программирование на ActionScript 3.0.
См. также
checkPolicyFile | свойство |
public var checkPolicyFile:Boolean = false
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Указывает, должен ли проигрыватель Flash Player пытаться загрузить файл политики для URL с сервера загружаемого объекта перед началом загрузки самого объекта. Этот флаг применим к методу Loader.load()
, но не работает для методаLoader.loadBytes()
.
Установите для этого флага значение true
, если изображение (JPEG, GIF или PNG) загружается извне домена вызывающего SWF-файла и предполагается доступ к содержимому этого изображения из ActionScript. В число примеров обращения к содержимому изображений входят обращение к свойству Loader.content
для получения объекта Bitmap, а также вызов метода BitmapData.draw()
для получения копии растрового представления загруженного изображения. Если попытаться выполнить одну из этих операций, не указав checkPolicyFile
во время загрузки, можно получить исключение SecurityError
, поскольку необходимый файл политики еще не был загружен.
При вызове метода Loader.load()
с установленным для LoaderContext.checkPolicyFile
значением true
, проигрыватель Flash Player не начнет загрузку указанного в URLRequest.url
объекта до тех пор, пока успешно не загрузит соответствующий файл политики для URL или не обнаружит отсутствие такого файла. Проигрыватель Flash Player в первую очередь учитывает файлы политик, которые уже загружены, затем пытается загрузить любые незавершенные загрузки файлов политик, указанных при вызовах метода Security.loadPolicyFile()
, затем пытается загрузить файл политики из местоположения по умолчанию, соответствующему URLRequest.url
(это файл /crossdomain.xml
на том же сервере, что и URLRequest.url
). Во всех случаях для проигрывателя Flash Player необходимо, чтобы данный файл политики существовал на своем сервере, чтобы он обеспечивал доступ к объекту, адресуемому URLRequest.url
благодаря правильному расположению этого файла политики, а также, чтобы он разрешал доступ к домену вызывающего SWF-файла с помощью одного или нескольких тегов <allow-access-from>
.
Если для checkPolicyFile
установлено значение true
, проигрыватель Flash Player ожидает завершения загрузки файла политики, чтобы начать основную загрузку, указанную в методе Loader.load()
. Поэтому, пока необходимый файл политики существует, как только будет получено любое из событий ProgressEvent.PROGRESS
или Event.COMPLETE
для свойства contentLoaderInfo
объекта Loader, загрузка файла политики завершается и можно безопасно начинать выполнение операций, требующих этот файл политики.
Если для checkPolicyFile
установлено значение true
, а соответствующий файл политики не найден, сообщение об ошибке не будет отправляться до тех пор, пока не будет предпринята попытка выполнить операцию, создающую исключение SecurityError
. Однако как только объект LoaderInfo передаст событие ProgressEvent.PROGRESS
или Event.COMPLETE
, можно убедиться, найден ли соответствующий файл политики, проверив значение свойства LoaderInfo.childAllowsParent
.
Если необходим доступ к загружаемому изображению на уровне растрового представления, не следует устанавливать для свойства checkPolicyFile
значение true
. Проверка файла политики в этом случае бесполезна, поскольку это может задержать запуск загрузки, а также нерационально израсходовать дополнительные ресурсы полосы пропускания.
Также постарайтесь избегать установки для checkPolicyFile
значения true
, если для загрузки SWF-файла используется метод Loader.load()
. Причина этого в том, что разрешения на взаимные обращения между SWF-файлами не контролируются файлами политик, а только с помощью метода Security.allowDomain()
, поэтому вызов checkPolicyFile
никак не влияет на загрузку SWF-файла. Проверка файла политики в этом случае бесполезна, поскольку это может задержать загрузку SWF-файла, а также нерационально израсходовать дополнительные ресурсы полосы пропускания. (Проигрыватель Flash Player не может определить будет ли основная загрузка выполняться для SWF-файла или изображения, поскольку загрузка файла политики произошла перед основной загрузкой.)
Будьте осторожны с checkPolicyFile
, если выполняется загрузка объекта из URL, который может использовать HTTP-перенаправления на стороне сервера. Проигрыватель Flash Player всегда пытается извлекать файлы политик, соответствующие исходному URL, указанному в URLRequest.url
. Если окончательный объект передается с другого URL-адреса из-за HTTP-перенаправлений, то изначально загруженные файлы политик могут быть не применимы к окончательному URL-адресу объекта, который и следует учитывать при принятии мер безопасности. В случае возникновения подобной ситуации можно проверить значение LoaderInfo.url
после получения события ProgressEvent.PROGRESS
или Event.COMPLETE
, в котором сообщается окончательный URL-адрес объекта. Затем вызовите метод Security.loadPolicyFile()
с файлом политики на основе URL-адресов, где учитывается окончательный URL-адрес объекта. Затем опрашивайте значение LoaderInfo.childAllowsParent
до тех пор, пока оно не изменится наtrue
.
См. также
securityDomain | свойство |
public var securityDomain:SecurityDomain = null
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Указывает домен защиты для использования в операции Loader.load()
. Используйте это свойство только при загрузке SWF-файлов (но не изображений).
Выбор домена безопасности имеет смысл только в том случае, если загружается SWF-файл, который мог быть получен из другого домена (другой сервер), отличающегося от загружающего SWF-файла. Если SWF-файл загружается из собственного домена, он всегда помещается в собственный домен защиты. Но если SWF-файл загружается из другого домена, есть два варианта действий. Можно разрешить загружаемому SWF-файлу быть помещенным в "обычный" домен защиты, который отличается от домена защиты загружающего SWF-файла; это вариант по умолчанию. Другим вариантом является указание того, что загружаемый SWF-файл требуется поместить в тот же домен защиты, что и загружающий SWF-файл, установив для myLoaderContext.securityDomain
значение равное SecurityDomain.currentDomain
. Это называется загрузка импортом, что с точки зрения обеспечения безопасности, эквивалентно копированию загружаемого SWF-файла на собственный сервер и загрузки его оттуда. Чтобы загрузка импортом завершилась успешно, загруженный SWF-файл должен иметь файл политики, определяющий в качестве доверенного домен загружающего SWF-файла.
Указывать собственный домен защиты можно только в LoaderContext.securityDomain
. Попытка указать какой-либо другой домен защиты приводит к исключению SecurityError
.
Дополнительные сведения см. в главе "Безопасность" в книге Программирование на ActionScript 3.0.
См. также
LoaderContext | () | Конструктор |
public function LoaderContext(checkPolicyFile:Boolean = false, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null)
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Создает новый объект LoaderContext с заданными параметрами. Подробные сведения об этих параметрах см. в описаниях свойств этого класса.
ПараметрыcheckPolicyFile:Boolean (default = false ) — Указывает, должен ли проигрыватель Flash Player проверять существование файла политики для URL перед загрузкой объекта.
| |
applicationDomain:ApplicationDomain (default = null ) — Указывает, какой объект ApplicationDomain следует использовать для объекта Loader.
| |
securityDomain:SecurityDomain (default = null ) — Указывает, какой объект SecurityDomain следует использовать для объекта Loader.
|
См. также