Общие объекты

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Проигрыватель Flash Player предоставляет возможность использовать общие объекты, являющиеся объектами ActionScript, которые постоянно хранятся за пределами SWF-файла либо локально в файловой системе пользователя, либо удаленно на RTMP-сервере. Общие объекты, как и другое мультимедийное содержимое в проигрывателе Flash Player, распределяются по изолированным программным средам. Однако для общих объектов используется немного другая модель изолированных программных сред, так как они не являются ресурсами, к которым можно обращаться с других доменов. Вместо этого общие объекты всегда извлекаются из хранилища общих объектов, индивидуального для домена каждого SWF-файла, который вызывает методы класса SharedObject. Обычно хранилища общих файлов бывают даже более специфичными: по умолчанию каждый SWF-файл использует хранилище общих файлов, индивидуальное для его полного исходного URL-адреса. Дополнительные сведения об общих объектах см. в разделе «Общие объекты».

SWF-файл может использовать параметр localPath методов SharedObject.getLocal() и SharedObject.getRemote(), чтобы использовать хранилище общих объектов, связанное только с частью его URL-адреса. Таким образом SWF-файл может разрешить использование общих объектов SWF-файлами с других URL-адресов. Даже если передать значение '/' для параметра localPath, все равно указывается хранилище общих объектов, индивидуальное для его домена.

Пользователи могут ограничить доступ к общим объектам с помощью диалогового окна параметров Flash Player или диспетчера настроек. По умолчанию общие объекты не могут содержать более 100 кб данных для каждого домена. Администраторы и пользователи также могут устанавливать ограничения на возможность записи данных в файловой системе. Дополнительные сведения см. в разделах «Элементы управления администратора» и «Элементы управления пользователя».

Чтобы сделать общий объект защищенным, задайте свойство true для параметра secure метода SharedObject.getLocal() или SharedObject.getRemote(). Используя параметр secure, необходимо учитывать следующее.

  • Если данный параметр имеет значение true, проигрыватель Flash Player создает новый защищенный общий объект или получает ссылку на существующий защищенный общий объект. Данный защищенный общий объект может считываться или записываться только теми SWF-файлами, доставленными по протоколу HTTPS, которые вызывают метод SharedObject.getLocal() с параметром secure, имеющим значение true.

  • Если данный параметр имеет значение false, проигрыватель Flash Player создает новый общий объект или получает ссылку на существующий общий объект, который может быть считан или записан SWF-файлами, доставленными посредством подключения по другому протоколу (не HTTPS).

Если вызывающий SWF-файл размещен на незащищенном URL-адресе (без протокола HTTPS), то при передаче значения true для параметра secure метода SharedObject.getLocal() или SharedObject.getRemote() выдается исключение SecurityError.

Выбор хранилища общих объектов осуществляется на базе исходного URL-адреса SWF-файла. Это правило действует даже в двух случаях, когда SWF-файл имеет сложный URL-адрес: при загрузке с импортом и при динамической загрузке. При загрузке с импортом SWF-файл загружается с использованием свойства LoaderContext.securityDomain в значении SecurityDomain.currentDomain. В этой ситуации загружаемый SWF-файл получает псевдо-URL-адрес, в начале которого указывается домен загружающего SWF-файла, а затем исходный URL-адрес. Динамическая загрузка происходит, когда SWF-файл загружается с помощью метода Loader.loadBytes(). В этой ситуации загружаемый SWF-файл получает псевдоадрес, в начале которого указывается полный URL-адрес загружающего SWF-файла, а затем числовой идентификатор. И при загрузке с импортом и при динамической загрузке псевдо-URL SWF-файла можно получить с помощью свойства LoaderInfo.url. Псевдо-URL используется для выбора хранилища общих объектов точно так же, как и настоящий адрес. Можно указать параметр localPath общего объекта, в котором псевдо-URL используется частично или полностью.

Пользователи и администраторы могут отключить использование сторонних общих объектов. При этом общие объекты используются любыми SWF-файлами, выполняемыми в веб-обозревателях, когда исходный URL-адрес SWF-файла находится не в том домене, который указан в адресной строке обозревателя. Пользователи и администраторы могут отключить использование сторонних общих объектов, чтобы обеспечить конфиденциальность и избежать междоменного отслеживания. Во избежание такого ограничения можно сделать так, чтобы SWF-файлы, использующие общие объекты, загружались только в пределах структур HTML-страницы. Это гарантирует, что SWF-файл загружается с того домена, который отображается в адресной строке обозревателя. При попытке использовать общие объекты из стороннего SWF-файла возможность использования сторонних общих объектов отключается и методы SharedObject.getLocal() и SharedObject.getRemote() возвращают нулевое значение null. Дополнительные сведения см. на странице www.adobe.com/products/flashplayer/articles/thirdpartylso.