Das flash.net-Paket enthält Funktionen auf Paketebene zum Öffnen eines neuen Browserfensters, zum Senden einer URL-Anforderung an einen Server und zum Verarbeiten von Klassen-Aliasbezeichnungen.
Funktion | Definiert von | ||
---|---|---|---|
Sucht nach einer Klasse, für die mit dem Aufruf der Methode „registerClassAlias()“ ein Alias registriert wurde. | flash.net | ||
Öffnet oder ersetzt ein Fenster in der Anwendung mit dem Flash Player-Container (in der Regel ein Browser). | flash.net | ||
Behält die Klasse (den Typ) eines Objekts bei, wenn dieses in Action Message Format (AMF) kodiert wird. | flash.net | ||
Sendet eine URL-Anforderung an einen Server, Antworten werden jedoch ignoriert. | flash.net |
getClassByAlias | () | Funktion |
public function getClassByAlias(aliasName:String):Class
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Sucht nach einer Klasse, für die mit dem Aufruf der Methode registerClassAlias()
ein Alias registriert wurde.
Es erfolgt keine Interaktion zwischen dieser Methode und der Methode flash.utils.getDefinitionByName()
.
Parameter
aliasName:String — Der zu suchende Alias.
|
Class — Die mit dem gegebenen Alias verknüpfte Klasse. Falls die Suche nach der Klasse nicht erfolgreich ist, wird eine Ausnahme ausgelöst.
|
Auslöser
ReferenceError — Der Alias wurde nicht registriert.
|
Verwandte API-Elemente
navigateToURL | () | Funktion |
public function navigateToURL(request:URLRequest, window:String = null):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Öffnet oder ersetzt ein Fenster in der Anwendung mit dem Flash Player-Container (in der Regel ein Browser). In Adobe AIR öffnet die Funktion eine URL im Standardwebbrowser des Systems
Wichtiger Sicherheitshinweis
Entwickler übergeben URL-Werte, die von externen Quellen wie z. B. FlashVars erhalten wurden, oft an die navigateToURL()
-Funktion. Hacker können versuchen, die externen Quellen zu ändern, um Angriffe wie z. B. Cross-Site-Scripting durchzuführen. Aus diesem Grund sollten Entwickler alle URLs überprüfen, bevor sie sie an diese Funktion übergeben.
Eine gute Datenprüfung für URLs kann je nach dem Verwendungszweck der URL in der gesamten Anwendung Verschiedenes bedeuten. Eine der häufigsten Datenprüfmethode besteht darin, zu prüfen, ob die URL dem jeweiligen Schema entspricht. Wenn z. B. unbeabsichtigt javascript:-URLs erlaubt werden, kann dies in Cross-Site-Scripting resultieren. Durch die Prüfung, ob die URL innerhalb Ihrer Domäne ist, kann gewährleistet werden, dass die SWF-Datei nicht als offene Umleitung durch Personen verwendet werden kann, die Phishing-Angriffe ausführen. Als zusätzliche Sicherheitsmaßnahme könnten Sie außerdem den Pfad der URL prüfen bzw. auch prüfen, ob die URL den RFC-Richtlinien entspricht.
Der folgende Code ist ein einfaches Beispiel für eine Datenprüfung, bei der jede URL, die nicht mit http:// oder https:// beginnt, geblockt wird, und außerdem überprüft wird, ob sich die URL innerhalb Ihres Domänennamens befindet. Dieses Beispiel ist nicht unbedingt für alle Webanwendungen geeignet und Sie sollten sich überlegen, ob zusätzliche Prüfungen für URLs notwendig sind.
// 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); }
Für local-Inhalt, der in einem Browser ausgeführt wird, sind Aufrufe der navigateToURL()
-Methode, die ein "javascript:"
-Pseudoprotokoll (über ein URLRequest
-Objekt, das als erster Parameter übergeben wurde) nur zulässig, wenn sich die SWF-Datei und die enthaltende Webseite (sofern es eine gibt) in der lokal vertrauenswürdigen Sicherheitssandbox befinden. Einige Browser unterstützen das Javascript-Protokoll mit der navigateToURL()
-Methode nicht. Ziehen Sie stattdessen einen Aufruf der call()
-Methode der ExternalInterface
-API in Betracht, um JavaScript-Methoden innerhalb der umschließenden HTML-Seite aufzurufen.
In Flash Player und anwendungsfremden Sandboxen in Adobe AIR können Sie keine Verbindung mit normalerweise reservierten Ports herstellen. Eine vollständige Liste der gesperrten Ports finden Sie unter „Beschränken von Netzwerk-APIs“ im ActionScript 3.0 Entwicklerhandbuch.
Wenn Flash Player 10 oder eine spätere Version im Browser ausgeführt wird, kann diese Methode eventuell nicht programmgesteuert verwendet werden, um ein Popupfenster zu öffnen. Verschiedene Browser (und Browserkonfigurationen) blocken eventuell Popupfenster. Es kann daher nicht sichergestellt werden, dass Popupfenster eingeblendet werden. Den größten Erfolg verspricht diese Methode zum Öffnen eines Popupfensters, und zwar aufgrund von Code, der als direktes Ergebnis einer Benutzeraktion ausgeführt wird, z. B. in einer Ereignisprozedur für ein Mausklick- oder Tastendruckereignis.
Wenn Sie in Flash Player 10 oder höher einen Multipart-Content-Type verwenden (z. B. „multipart/form-data“), der einen Upload enthält (gekennzeichnet durch einen „filename“-Parameter in einem „content-disposition“-Header innerhalb des POST-Body), so unterliegt die POST-Methode den Sicherheitsregeln für Uploads:
- Der POST-Vorgang muss als Reaktion auf eine durch den Benutzer initiierte Aktion, z. B. Mausklick oder Tastendruck, erfolgen.
- Ist die POST-Methode domänenübergreifend (das POST-Ziel befindet sich auf einem anderen Server als die SWF-Datei, die die POST-Anforderung sendet), so muss der Zielserver eine URL-Richtliniendatei bereitstellen, die den domänenübergreifenden Zugriff erlaubt.
Für alle mehrteiligen Content-Typen muss ebenfalls die Syntax nach Standard RFC2046 gültig sein. Scheint die Syntax ungültig zu sein, so unterliegt die POST-Methode den Sicherheitsregeln für Uploads.
In AIR werden auf mobilen Plattformen die URI-Schemas sms: und tel: unterstützt. Unter Android werden die URI-Schemas vipaccess:, connectpro: und market: unterstützt. Die URL-Syntax richtet sich nach den Plattformkonventionen. Unter Android muss das URI-Schema zum Beispiel in Kleinbuchstaben angegeben werden. Wenn Sie unter Verwendung eines dieser Schemas zu einer URL navigieren, öffnet die Laufzeitumgebung die URL in der Standardanwendung zur Verarbeitung dieses Schemas. Bei der Navigation zu tel:+5555555555
wird zum Beispiel die Telefonwahl geöffnet, wobei die Nummer bereits eingetragen wurde. Damit die URL verarbeitet werden kann, muss eine separate Anwendung oder Utility verfügbar sein, zum Beispiel ein Telefonwählprogramm.
Mit dem folgenden Code können Sie die Anwendungen VIP Access und Connect Pro unter Android aufrufen:
//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
Parameter
request:URLRequest — Ein URLRequest-Objekt, das die URL angibt, zu der navigiert werden soll.
Für Inhalt, der in Adobe AIR ausgeführt wird, gilt: Wenn die | |
window:String (default = null ) — Das Browserfenster oder der HTML-Frame, in dem das mit dem Parameter request angegebene Dokument angezeigt werden soll. Sie können den Namen eines bestimmten Fensters angeben oder einen der folgenden Werte verwenden:
Wenn Sie für diesen Parameter keinen Wert angeben, wird ein neues leeres Fenster erstellt. Im eigenständigen Player können Sie entweder ein neues Fenster ( Hinweis: Wenn eine SWF-Datei in der lokalen Dateisystem-Sandbox ausgeführt wird und mit einem Code, der sich in dieser SWF-Datei befindet, die Funktion |
Auslöser
IOError — Die digest -Eigenschaft des request -Objekts ist nicht null . Sie sollten nur die digest -Eigenschaft eines zu verwendenden URLRequest-Objekts festlegen, das die URLLoader.load() -Methode beim Laden einer SWZ-Datei (einer Adobe-Plattformkomponente) aufruft.
| |
SecurityError — In Flash Player (und in anwendungsfremden Sandboxinhalt in Adobe AIR), wird dieser Fehler in den folgenden Situationen zurückgegeben:
| |
Error — Wenn die Methode nicht als Reaktion auf eine Benutzeraktion, z. B. Mausereignis oder Tastendruckereignis, aufgerufen wird. Diese Anforderung bezieht sich nur auf Inhalt in Flash Player und anwendungsfremden Sandboxinhalt in Adobe AIR.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
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 | () | Funktion |
public function registerClassAlias(aliasName:String, classObject:Class):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Behält die Klasse (den Typ) eines Objekts bei, wenn dieses in Action Message Format (AMF) kodiert wird. Bei der Kodierung eines Objekts in AMF speichert diese Funktion einen Alias für die Klasse des Objekts, sodass Sie die Klasse wiederherstellen können, wenn Sie das Objekt dekodieren. Wenn im Kontext der Kodierung kein Alias für eine Objektklasse registriert wird, erfolgt die Kodierung des Objekts als anonymes Objekt. Wenn im Kontext der Dekodierung nicht derselbe Alias registriert ist, wird für die dekodierten Daten ein anonymes Objekt erstellt.
LocalConnection, ByteArray, SharedObject, NetConnection und NetStream sind Beispiele für Klassen, die Objekte in AMF kodieren.
Für den Kodierungs- und Dekodierungskontext muss nicht dieselbe Klasse für einen Alias verwendet werden. Die Klassen können geändert werden, vorausgesetzt, dass die Zielklasse alle Mitglieder enthält, die von der Quellklasse serialisiert werden.
Parameter
aliasName:String — Der zu verwendende Alias.
| |
classObject:Class — Die mit dem gegebenen Alias verknüpfte Klasse.
|
Auslöser
TypeError — Wenn einer der Parameter den Wert null aufweist.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
registerClassAlias()
zur Registrierung eines Alias (com.example.eg
) für die ExampleClass-Klasse verwendet. Die Registrierung eines Alias für die Klasse ermöglicht die Deserialisierung des Objekts als Instanz von ExampleClass, und der Code gibt den Wert true
aus. Bei Entfernung des Aufrufs registerClassAlias()
würde der Code den Wert false
ausgeben.
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 | () | Funktion |
public function sendToURL(request:URLRequest):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Sendet eine URL-Anforderung an einen Server, Antworten werden jedoch ignoriert.
Verwenden Sie die MethodeURLLoader.load()
, wenn die Serverantwort überprüft werden soll.
Eine Verbindung mit normalerweise reservierten Ports ist nicht möglich. Eine vollständige Liste der gesperrten Ports finden Sie unter „Beschränken von Netzwerk-APIs“ im ActionScript 3.0 Entwicklerhandbuch.
Sie können eine SWF-Datei daran hindern, diese Methode aufzurufen, indem Sie auf der HTML-Seite, die den SWF-Inhalt enthält, den Parameter allowNetworking
der Tags object
und embed
festlegen.
Wenn Sie in Flash Player 10 oder höher einen Multipart-Content-Type verwenden (z. B. „multipart/form-data“), der einen Upload enthält (gekennzeichnet durch einen „filename“-Parameter in einem „content-disposition“-Header innerhalb des POST-Body), so unterliegt die POST-Methode den Sicherheitsregeln für Uploads:
- Der POST-Vorgang muss als Reaktion auf eine durch den Benutzer initiierte Aktion, z. B. Mausklick oder Tastendruck, erfolgen.
- Ist die POST-Methode domänenübergreifend (das POST-Ziel befindet sich auf einem anderen Server als die SWF-Datei, die die POST-Anforderung sendet), so muss der Zielserver eine URL-Richtliniendatei bereitstellen, die den domänenübergreifenden Zugriff erlaubt.
Für alle mehrteiligen Content-Typen muss ebenfalls die Syntax nach Standard RFC2046 gültig sein. Scheint die Syntax ungültig zu sein, so unterliegt die POST-Methode den Sicherheitsregeln für Uploads.
Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.
Parameter
request:URLRequest — Ein URLRequest-Objekt, das die URL angibt, an die Daten gesendet werden sollen.
|
Auslöser
SecurityError — Über lokale nicht vertrauenswürdige SWF-Dateien kann keine Verbindung mit dem Internet hergestellt werden. Sie können diese Situation vermeiden, indem Sie die entsprechende SWF-Datei als lokal mit Netzwerkzugang oder als vertrauenswürdig klassifizieren.
| |
SecurityError — Eine Verbindung mit normalerweise reservierten Ports ist nicht möglich. Eine vollständige Liste der gesperrten Ports finden Sie unter „Beschränken von Netzwerk-APIs“ im ActionScript 3.0 Entwicklerhandbuch.
|
Beispiel ( Verwendung dieses Beispiels )
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, 10:19 AM Z