В пакете 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