Pakiet flash.net zawiera funkcje zdefiniowane na poziomie pakietu, służące do otwierania nowego okna przeglądarki, wysyłania do serwera żądania z adresem URL i obsługi aliasów klas.
Funkcja | Zdefiniowane przez | ||
---|---|---|---|
Wyszukuje klasę, której poprzedni alias został zarejestrowany za pośrednictwem wywołania metody registerClassAlias(). | flash.net | ||
Otwiera lub zastępuje okno w aplikacji zawierającej kontener programu Flash Player (zwykle jest to przeglądarka). | flash.net | ||
Zachowuje klasę (typ) obiektu kodowanego w formacie AMF (Action Message Format). | flash.net | ||
Wysyła żądanie URL na serwer, ale pomija wszelkie odpowiedzi. | flash.net |
getClassByAlias | () | funkcja |
public function getClassByAlias(aliasName:String):Class
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wyszukuje klasę, której poprzedni alias został zarejestrowany za pośrednictwem wywołania metody registerClassAlias()
.
Ta metoda nie wchodzi w interakcje z metodą flash.utils.getDefinitionByName()
.
Parametry
aliasName:String — Alias, jaki ma zostać znaleziony.
|
Class — Klasa skojarzona z danym aliasem. Jeśli nie zostanie znaleziona, zostanie zgłoszony wyjątek.
|
Zgłasza
ReferenceError — Alias nie został zarejestrowany.
|
Powiązane elementy interfejsu API
navigateToURL | () | funkcja |
public function navigateToURL(request:URLRequest, window:String = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Otwiera lub zastępuje okno w aplikacji zawierającej kontener programu Flash Player (zwykle jest to przeglądarka). W środowisku Adobe AIR funkcja ta otwiera adres URL w domyślnej przeglądarce systemowej.
Ważna uwaga na temat bezpieczeństwa
Programiści często przekazują do funkcji navigateToURL()
adresy URL uzyskane ze źródeł zewnętrznych, takich jak FlashVars. Agresorzy mogą podejmować próby manipulowania takimi źródłami zewnętrznymi w celu przeprowadzenia ataków, np. wywoływania skryptów między serwerami. Dlatego aplikacja powinna weryfikować wszystkie adresy URL przed przekazaniem ich do tej funkcji.
Właściwa forma weryfikacji zależy od zastosowania adresu URL w aplikacji. Najczęściej stosowane techniki weryfikacji polegają na sprawdzeniu, czy adres URL należy do odpowiedniego schematu. Na przykład niezamierzone dopuszczenie schematu javascript: może doprowadzić do wywołania skryptu na innym serwerze. Weryfikacja, czy adres URL należy do odpowiedniej domeny, eliminuje ryzyko wykorzystania pliku SWF do przekierowania operacji otwierania plików przez agresorów realizujących ataki typu phishing. Aby uzyskać jeszcze wyższy poziom bezpieczeństwa, można weryfikować także ścieżkę adresu URL i jego zgodność z wytycznymi RFC.
Poniższy przykładowy kod ilustruje weryfikację danych. Odrzuca wszelkie adresy URL, które nie rozpoczynają się od http:// lub https://, oraz sprawdza, czy URL należy do domeny o właściwej nazwie. Ten przykład nie musi być odpowiedzi dla wszystkich aplikacji sieci Web i należy rozważyć zastosowanie dodatkowych kontroli adresu 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); }
Dla treści lokalnych działających w przeglądarce wywołania metody navigateToURL()
, które określają pseudoprotokół "javascript:"
(za pomocą obiektu URLRequest
przekazanego jako pierwszy parametr) są dozwolone tylko wówczas, gdy plik SWF i zawierająca strona sieci Web (jeśli istnieje) znajdują się w lokalnym zaufanym obszarze ograniczonym. Niektóre przeglądarki nie obsługują korzystania z protokołu javascript z metodą navigateToURL()
. Zamiast tej metody należy użyć metody call()
interfejsu API ExternalInterface
w celu wywołania metod JavaScript na otaczającej stronie HTML.
W programie Flash Player i nieaplikacyjnych obszarach izolowanych środowiska AIR nie jest możliwe nawiązywanie połączeń z portami, które zazwyczaj są zastrzeżone. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — Podręcznik programistów.
W programie Flash Player 10 i nowszych wersjach działających w przeglądarce użycie tej metody do programowego otwarcia okna podręcznego może zakończyć się niepowodzeniem. Różne przeglądarki (i konfiguracje przeglądarek) mogą blokować okna podręczne w każdej chwili; nie można zagwarantować, że okno podręczne zostanie wyświetlone. Jednak, aby zwiększyć szansę na powodzenie, należy używać tej metody w celu otwarcia podręcznego okna tylko w kodzie, który jest wykonywany jako bezpośredni wynik działania użytkownika (np. w module obsługi zdarzenia dla zdarzenia kliknięcia myszą lub naciśnięcia klawisza).
W programie Flash Player 10 i nowszych wersjach, jeśli użyty zostanie wieloczęściowy nagłówek Content-Type (np. "multipart/form-data"), w którym przesyłane są pliki (wskazywane przez parametr "filename" w nagłówku "content-disposition" w treści operacji POST), wówczas operacja POST podlega regułom zabezpieczeń zastosowanym do wysyłania plików:
- Operację POST należy wykonać w odpowiedzi na działanie zainicjowane przez użytkownika, np. kliknięcie myszy lub naciśnięcie klawisza.
- Jeśli operacja POST jest operacją międzydomenową (cel operacji POST nie znajduje się na tym samym serwerze, co plik SWF, który wysyła żądanie POST), docelowy serwer musi dostarczyć plik reguł URL, który zezwoli na międzydomenowy dostęp.
Dla dowolnego wieloczęściowego nagłówka Content-Type również składnia musi być poprawna (zgodnie ze standardami RFC2046). Jeśli składnia okaże się niepoprawna, operacja POST będzie podlegać regułom zabezpieczeń stosowanym do wysyłania plików.
W środowisku AIR na platformach urządzeń przenośnych są obsługiwane schematy identyfikatorów URI „sms:” i „tel:”. W systemie Android są obsługiwane następujące schematy identyfikatora URI: vipaccess:, connectpro:, market:. Składnia adresu URL podlega formatowi obowiązującemu na platformie. Na przykład w systemie Android schemat identyfikatora URI musi zostać podany małymi literami. Po przejściu do adresu URL przy użyciu jednego z tych schematów środowisko wykonawcze otwiera domyślną aplikację do obsługi danego schematu. W ten sposób użycie na przykład identyfikatora tel:+5555555555
spowoduje otwarcie modułu wybierania numeru z wprowadzonymi określonymi liczbami. Przetworzenie adresu URL wymaga dostępności narzędzia lub oddzielnej aplikacji, na przykład modułu wybierania numeru.
Poniższy kod ilustruje sposób wywoływania aplikacji VIP Access i Connect Pro w systemie 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://"));
Parametry
request:URLRequest — Obiekt URLRequest, który określa adres URL do nawigacji.
W przypadku zawartości działającej w środowisku Adobe AIR użycie funkcji | |
window:String (default = null ) — Okno przeglądarki lub ramka HTML, w której zostanie wyświetlony dokument wskazany przez parametr request . Istnieje możliwość wprowadzenia nazwy określonego okna lub użycia następujących wartości:
Jeśli nie zostanie określona wartość dla tego parametru, zostanie utworzone nowe puste okno. W odtwarzaczu autonomicznym można określić nowe okno ( Uwaga: Jeśli kod w pliku SWF, który działa w obszarze izolowanym z dostępem do systemu plików, wywoła funkcję |
Zgłasza
IOError — Wartością właściwości digest obiektu request nie jest wartość null . Programista powinien ustawić tylko właściwość digest obiektu URLRequest, który będzie używany, wywołując metodę URLLoader.load() w czasie ładowania pliku SWZ (składnik platformy Adobe).
| |
SecurityError — W programie Flash Player (i treści środowiska Adobe AIR w nieaplikacyjnym obszarze izolowanym) ten błąd jest generowany w następujących sytuacjach:
| |
Error — Gdy metoda nie zostanie wywołana w odpowiedzi na działanie użytkownika, np. zdarzenie myszy lub klawiatury. To wymaganie obowiązuje tylko w odniesieniu do treści w programie Flash Player i do treści Adobe AIR w nieaplikacyjnych obszarach izolowanych zabezpieczeń.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
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 | () | funkcja |
public function registerClassAlias(aliasName:String, classObject:Class):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zachowuje klasę (typ) obiektu kodowanego w formacie AMF (Action Message Format). W przypadku kodowania obiektu zgodnie z formatem AMF ta funkcja powoduje zapisanie alisu dla jego klasy, dzięki czemu możliwe jest przywrócenie klasy przy dekodowaniu obiektu. Jeśli kontekst kodowania nie zarejestrował aliasu dla klasy obiektu, obiekt jest kodowany jako anonimowy. I podobnie — jeśli dla kontekstu dekodowania nie zarejestrowano tego samego aliasu, dla dekodowanych danych tworzony jest obiekt anonimowy.
LocalConnection, ByteArray, SharedObject, NetConnection i NetStream to przykłady klas, które kodują obiekty w AMF.
Konteksty kodowania i dekodowania muszą korzystać z tej samej klasy dla aliasu; mogą zmieniać klasy, pod warunkiem że klasa docelowa zawiera wszystkie elementy serializowane przez klasę źródłową.
Parametry
aliasName:String — Używany alias.
| |
classObject:Class — Klasa skojarzona z danym aliasem.
|
Zgłasza
TypeError — Jeśli którykolwiek z parametrów ma wartość null .
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
registerClassAlias()
w celu zarejestrowania aliasu (com.example.eg
) dla klasy ExampleClass. Alias jest zarejestrowany dla klasy, dlatego obiekt może być deserializowany jako instancja klasy ExampleClass i wówczas kod zwróci true
. Jeśli wywołanie registerClassAlias()
zostanie usunięte, kod zwróci 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 | () | funkcja |
public function sendToURL(request:URLRequest):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wysyła żądanie URL na serwer, ale pomija wszelkie odpowiedzi.
Aby sprawdzić odpowiedź serwera, należy użyć metodę URLLoader.load()
.
Nie można połączyć się z portem, który zazwyczaj jest zastrzeżony. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — podręcznik dla programistów.
Istnieje możliwość zablokowania używania tej metody przez plik SWF. W tym celu należy ustawić parametr allowNetworking
znaczników object
oraz embed
na stronie HTML zawierającej zawartość SWF.
W programie Flash Player 10 i nowszych wersjach, jeśli użyty zostanie wieloczęściowy nagłówek Content-Type (np. "multipart/form-data"), w którym przesyłane są pliki (wskazywane przez parametr "filename" w nagłówku "content-disposition" w treści operacji POST), wówczas operacja POST podlega regułom zabezpieczeń zastosowanym do wysyłania plików:
- Operację POST należy wykonać w odpowiedzi na działanie zainicjowane przez użytkownika, np. kliknięcie myszy lub naciśnięcie klawisza.
- Jeśli operacja POST jest operacją międzydomenową (cel operacji POST nie znajduje się na tym samym serwerze, co plik SWF, który wysyła żądanie POST), docelowy serwer musi dostarczyć plik reguł URL, który zezwoli na międzydomenowy dostęp.
Dla dowolnego wieloczęściowego nagłówka Content-Type również składnia musi być poprawna (zgodnie ze standardami RFC2046). Jeśli składnia okaże się niepoprawna, operacja POST będzie podlegać regułom zabezpieczeń stosowanym do wysyłania plików.
Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo.
Parametry
request:URLRequest — Obiekt URLRequest określający adresy URL, do których wysyłane będą dane.
|
Zgłasza
SecurityError — Niezaufane pliki SWF nie mogą komunikować się z Internetem. Można uniknąć tego problemu przez ponowne zaklasyfikowanie pliku SWF jako lokalnego z dostępem do sieci lub pliku zaufanego.
| |
SecurityError — Nie można połączyć się z portem, który zazwyczaj jest zastrzeżony. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — podręcznik dla programistów.
|
Przykład ( Sposób korzystania z tego przykładu )
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, 12:22 PM Z