В пакете flash.net содержатся функции уровня пакета для открытия нового окна браузера, отправки URL-запроса серверу, а также функции для работы с псевдонимами классов.
Функция | Определено | ||
---|---|---|---|
Выполняет поиск класса, у которого ранее был псевдоним, зарегистрированный через вызов метода registerClassAlias(). | flash.net | ||
Открывает или заменяет окно в приложении, которое содержит контейнер Flash Player (обычно браузер). | flash.net | ||
Сохраняет класс (тип) объекта при шифровании объекта в формат AMF. | flash.net | ||
Отправляет на сервер запрос URL-адреса, но игнорирует ответ. | flash.net |
getClassByAlias | () | функция |
public function getClassByAlias(aliasName:String):Class
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Выполняет поиск класса, у которого ранее был псевдоним, зарегистрированный через вызов метода registerClassAlias()
.
Данный метод не взаимодействует с методом flash.utils.getDefinitionByName()
.
Параметры
aliasName:String — Искомый псевдоним.
|
Class — Класс, связанный с данным псевдонимом. Если не будет найдено, будет создано исключение.
|
Выдает
ReferenceError — Псевдоним не был зарегистрирован.
|
Связанные элементы API
navigateToURL | () | функция |
public function navigateToURL(request:URLRequest, window:String = null):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Открывает или заменяет окно в приложении, которое содержит контейнер Flash Player (обычно браузер). В Adobe AIR эта функция открывает URL-адрес в системном веб-обозревателе по умолчанию
Важное примечание о безопасности
Разработчики часто передают функции navigateToURL()
значения URL-адресов, полученные из внешних источников, таких как FlashVars. Злоумышленники могут использовать эти внешние источники для таких атак, как выполнение межузловых сценариев. В связи с этим разработчикам следует проверять все URL-адреса перед тем, как передать их этой функции.
Надлежащая проверка данных в отношении URL-адресов может иметь разное значение в зависимости от использования URL-адреса в приложении. К типичным методам проверки данных относится проверка правильности схемы URL-адреса. Например, непреднамеренное разрешение URL-адресов javascript: может привести к выполнению межузловых сценариев. Проверка принадлежности URL-адреса вашему домену позволит избежать использования SWF-файла в качестве перенаправителя людьми, совершающими фишинг-атаки. Для лучшей защиты можно также проверить путь URL-адреса и то, что URL-адрес соответствует рекомендациям RFC
Следующий код является простым примером выполнения проверки данных, которая предусматривает отклонение всех URL-адресов, которые не начинаются с http:// или https:// и проверку принадлежности URL-адреса вашему доменному имени. Этот пример может не подходить для всех web-приложений, поэтому при необходимости следует предусмотреть дополнительную проверку URL-адресов.
// AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name. function checkProtocol (flashVarURL:String):Boolean { // Get the domain name for the SWF if it is not known at compile time. // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string. var my_lc:LocalConnection = new LocalConnection(); var domainName:String = my_lc.domain; // Build the RegEx to test the URL. // This RegEx assumes that there is at least one "/" after the // domain. http://www.mysite.com will not match. var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/"); var result:Object = pattern.exec(flashVarURL); if (result == null || result[1] != domainName || flashVarURL.length >= 4096) { return (false); } return (true); }
Для локального содержимого, выполняющегося в браузере, вызовы метода navigateToURL()
, указывающие псевдо-протокол javascript:
(с помощью объекта URLRequest
, переданного в качестве первого параметра), допустимы только в том случае, если SWF-файл и рассматриваемая web-страница (если существует) находятся в локальной доверенной изолированной программной среде. В некоторых обозревателях не поддерживается применение протокола javascript с методом navigateToURL()
. Вместо этого следует использовать метод call()
API-интерфейса ExternalInterface
, чтобы вызвать методы JavaScript в рамках закрытой HTML-страницы.
В проигрывателе Flash Player, а также в изолированных программных средах Adobe AIR, отличных от среды приложения, нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).
В приложении Flash Player версии 10 и старше, запущенном в браузере, при использовании этого метода в программных средствах открытие всплывающего окна может не выполняться. Различные браузеры (и конфигурации браузеров) могут блокировать всплывающие окна в любое время; невозможно гарантировать, что какое-либо всплывающее окно будет отображаться. Однако для повышения вероятности открытия всплывающего окна используйте этот метод только в коде, который выполняется в качестве непосредственного результата действия пользователя (например, в обработчике событий для события щелчка мышью или нажатия клавиши).
В приложении Flash Player 10 и более поздней версии при использовании типа содержимого multipart (например, multipart/form-data), в котором содержится загрузка (обозначена параметром filename в заголовке content-disposition в теле оператора POST), к операции POST применяются правила безопасности для загрузок:
- Операция POST должна быть выполнена в ответ на действие, инициированное пользователем, такое как щелчок мыши или нажатие клавиши.
- Если операция POST является междоменной (назначением операции POST не является сервер, на котором содержится SWF-файл, отправляющий запрос POST), целевой сервер должен предоставить файл политик URL, в котором разрешен междоменный доступ.
Кроме того, все объекты multipart Content-Type должны иметь допустимый синтаксис (в соответствии со стандартами RFC2046). Если синтаксис является недопустимым, к операции POST применяются правила безопасности, действующие для загрузок.
В среде AIR на мобильных платформах поддерживаются URI-схемы sms: и tel:. В ОС Android также поддерживаются схемы URI vipaccess:, connectpro: и market:. Синтаксис URL-адреса зависит от принятых для платформы соглашений. Например, на платформе Android схема URI должна включать символы в нижнем регистре. При переходе по URL-адресу с использованием одной из этих схем в среде выполнения этот адрес открывается в стандартной программе, предназначенной для обработки схемы. Например, при переходе по адресу tel:+5555555555
открывается программа набора номера телефона с уже введенным номером. Отдельное приложение или служебная программа, например номеронабиратель телефона, должны быть доступными для обработки URL.
Следующий код демонстрирует вызов приложений VIP Access и Connect Pro в ОС Android:
//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
Параметры
request:URLRequest — Объект URLRequest, указывающий URL-адрес, на который необходимо перейти.
В случае с содержимым, выполняющимся в Adobe AIR, при использовании функции | |
window:String (default = null ) — Окно обозревателя или HTML-фрейм, в котором будет отображаться документ, указанный в параметре request . Вы можете ввести имя определенного окна или использовать одно из следующих значений:
Если не будет указано значение для данного параметра, то будет создано новое пустое окно. В автономном проигрывателе можно указать новое окно ( Примечание. Когда код в SWF-файле, запущенном в локальной изолированной программной среде для файловой системы, вызывает функцию |
Выдает
IOError — Значением свойства digest объекта request не является null . Свойство digest объекта URLRequest следует задавать только при вызове метода URLLoader.load() во время загрузки SWZ-файла (компонент платформы Adobe).
| |
SecurityError — В приложении Flash Player (и в содержимом Adobe AIR, находящемся не в изолированной программной среде приложения) эта ошибка возникает в следующих ситуациях.
| |
Error — Если вызов метода не выполняется в ответ на действие пользователя, такое как событие мыши или нажатие клавиши. Это требование применимо только к содержимому в Flash Player и к содержимому Adobe AIR, находящемуся не в изолированной программной среде приложения.
|
Связанные элементы API
Пример ( Использование этого примера )
package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class NavigateToURLExample extends Sprite { public function NavigateToURLExample() { var url:String = "http://www.adobe.com"; var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; try { navigateToURL(request); } catch (e:Error) { // handle error here } } } }
// Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); }
var request:URLRequest = new URLRequest( "tel:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "sms:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" ); navigateToURL( request );
registerClassAlias | () | функция |
public function registerClassAlias(aliasName:String, classObject:Class):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Сохраняет класс (тип) объекта при шифровании объекта в формат AMF. Когда вы кодируете объект в формат AMF, данная функция сохраняет псевдоним для его класса, что позволит при декодировании объекта восстановить нужный класс. Если в контексте кодирования псевдоним для класса объекта не был зарегистрирован, то объект кодируется как анонимный. Аналогичным образом, если в контексте декодирования отсутствует зарегистрированный псевдоним, для декодированных данных создается анонимный объект.
Примерами классов, кодирующих объекты в формат AMF, могут служить LocalConnection, ByteArray, SharedObject, NetConnection и NetStream.
Контекстам кодирования и декодирования не требуется использовать один и тот же класс для псевдонима. Они могут сменить классы при условии, что целевой класс содержит все члены, сериализуемые исходным классом.
Параметры
aliasName:String — Используемый псевдоним.
| |
classObject:Class — Класс, связанный с данным псевдонимом.
|
Выдает
TypeError — Если один из параметров имеет значение null .
|
Связанные элементы API
Пример ( Использование этого примера )
registerClassAlias()
регистрируется псевдоним (com.example.eg
) для класса ExampleClass. Так как для класса регистрируется нужный псевдоним, объект может быть десериализован как экземпляр ExampleClass, при этом код выдаст значение true
. Если бы вызов registerClassAlias()
был удален, код бы выдал значение false
.
package { import flash.display.Sprite; import flash.net.registerClassAlias; import flash.utils.ByteArray; public class RegisterClassAliasExample extends Sprite { public function RegisterClassAliasExample() { registerClassAlias("com.example.eg", ExampleClass); var eg1:ExampleClass = new ExampleClass(); var ba:ByteArray = new ByteArray(); ba.writeObject(eg1); ba.position = 0; var eg2:* = ba.readObject(); trace(eg2 is ExampleClass); // true } } } class ExampleClass {}
sendToURL | () | функция |
public function sendToURL(request:URLRequest):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Отправляет на сервер запрос URL-адреса, но игнорирует ответ.
Для изучения ответа сервера используйте метод URLLoader.load()
.
Нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).
Можно запретить использование SWF-файлом этого метода путем установки параметра allowNetworking
для тегов object
и embed
на странице HTML, содержащей SWF-содержимое.
В приложении Flash Player 10 и более поздней версии при использовании типа содержимого multipart (например, multipart/form-data), в котором содержится загрузка (обозначена параметром filename в заголовке content-disposition в теле оператора POST), к операции POST применяются правила безопасности для загрузок:
- Операция POST должна быть выполнена в ответ на действие, инициированное пользователем, такое как щелчок мыши или нажатие клавиши.
- Если операция POST является междоменной (назначением операции POST не является сервер, на котором содержится SWF-файл, отправляющий запрос POST), целевой сервер должен предоставить файл политик URL, в котором разрешен междоменный доступ.
Кроме того, все объекты multipart Content-Type должны иметь допустимый синтаксис (в соответствии со стандартами RFC2046). Если синтаксис является недопустимым, к операции POST применяются правила безопасности, действующие для загрузок.
Дополнительные сведения о безопасности см. в разделе центра разработчиков Flash Player Безопасность.
Параметры
request:URLRequest — Объект URLRequest, определяющий URL-адрес отправки данных.
|
Выдает
SecurityError — Локальные ненадежные SWF-файлы изолированы от Интернета. Этой ситуации можно избежать, если переклассифицировать данный SWF-файл как локальный с сетевым подключением или доверенный.
| |
SecurityError — Нельзя подключаться к общепринятым зарезервированным портам. Полный список заблокированных портов см. в разделе «Ограничение API-интерфейсов сетевого подключения» в руководстве ActionScript 3.0 Developer's Guide (руководстве разработчика по ActionScript 3.0).
|
Пример ( Использование этого примера )
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.sendToURL; public class SendToURLExample extends Sprite { public function SendToURLExample() { var url:String = "http://www.yourDomain.com/application.jsp"; var variables:URLVariables = new URLVariables(); variables.sessionId = new Date().getTime(); variables.userLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; trace("sendToURL: " + request.url + "?" + request.data); try { sendToURL(request); } catch (e:Error) { // handle error here } } } }
Tue Jun 12 2018, 11:50 AM Z