Het pakket flash.net bevat functies op pakketniveau voor het openen van een nieuw browservenster, het verzenden van een URL-aanvraag naar een server en het omgaan met klassealiassen.
Functie | Gedefinieerd door | ||
---|---|---|---|
Zoekt een klasse op waarvoor eerder een alias is geregistreerd via een aanroep van de methode registerClassAlias(). | flash.net | ||
Opent of vervangt een venster in de toepassing die de Flash Player-container bevat (doorgaans een browser). | flash.net | ||
Behoudt de klasse (het type) van een object wanneer het object wordt gecodeerd in AMF-indeling (Action Message Format). | flash.net | ||
Verzendt een URL-aanvraag naar een server, maar negeert reacties. | flash.net |
getClassByAlias | () | functie |
public function getClassByAlias(aliasName:String):Class
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zoekt een klasse op waarvoor eerder een alias is geregistreerd via een aanroep van de methode registerClassAlias()
.
Deze methode communiceert niet met de methode flash.utils.getDefinitionByName()
.
Parameters
aliasName:String — De alias waarnaar moet worden gezocht.
|
Class — De klasse die is gekoppeld aan de opgegeven alias. Wanneer deze niet wordt gevonden, wordt een uitzondering gegenereerd.
|
Gegenereerde uitzondering
ReferenceError — De alias is niet geregistreerd.
|
Verwante API-elementen
navigateToURL | () | functie |
public function navigateToURL(request:URLRequest, window:String = null):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Opent of vervangt een venster in de toepassing die de Flash Player-container bevat (doorgaans een browser). In Adobe AIR opent de functie een URL in de standaardwebbrowser van het systeem
Belangrijke beveiligingsoverweging
Ontwikkelaars geven aan de functie navigateToURL()
vaak URL-waarden door die afkomstig zijn uit externe bronnen zoals FlashVars. Aanvallers kunnen deze externe bronnen proberen te manipuleren om bijvoorbeeld cross-site scripting uit te voeren. Daarom moeten ontwikkelaars alle URL's valideren voordat ze die aan deze functie doorgeven.
Hoe URL's op een goede manier worden gevalideerd, is afhankelijk van het gebruik van de URL in de toepassing. Bij de meest algemene technieken voor gegevensvalidatie wordt onder andere gecontroleerd of de URL het juiste schema heeft. Als bijvoorbeeld onbedoeld javascript:-URL's worden toegestaan, kan dit leiden tot cross-site scripting. Als u controleert of de URL binnen uw domein bestaat, weet u zeker dat het SWF-bestand niet als een open-redirector kan worden gebruikt voor phishing. Voor extra veiligheid kunt u ook het pad van de URL valideren en controleren of de URL voldoet aan de RFC-richtlijnen
De volgende code bevat een eenvoudig voorbeeld waarin gegevens worden gevalideerd door elke URL te weigeren die niet begint met http:// of https:// en te controleren of de URL binnen uw domeinnaam bestaat. Dit voorbeeld is mogelijk niet geschikt voor alle webtoepassingen en u moet zelf bedenken welke extra controles voor URL's nodig zijn.
// 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); }
Voor lokale inhoud die in een browser wordt uitgevoerd, zijn aanroepen van de methode navigateToURL()
waarbij een "javascript:"
pseudo-protocol is opgegeven (via een object URLRequest
dat is doorgegeven als de eerste parameter) alleen toegestaan wanneer het SWF-bestand en de bijbehorende webpagina (indien deze bestaat) zich in de beveiligingssandbox Lokaal-vertrouwd bevinden. Sommige browsers ondersteunen dit javascript-protocol met de methode navigateToURL()
niet. Overweeg in plaats daarvan de methode call()
van de API ExternalInterface
te gebruiken om JavaScript-methoden aan te roepen binnen de betreffende HTML-pagina.
In Flash Player en in niet-toepassingssandboxen in Adobe AIR kunt u geen verbinding maken met doorgaans gereserveerde poorten. Zie "Netwerk-API's beperken" in de Adobe ActionScript 3.0-ontwikkelaarsgids voor een volledige lijst van geblokkeerde poorten.
Als u in Flash Player 10 en hoger tijdens uitvoering in een browser deze methode via programmacode gebruikt om een pop-upvenster te openen, lukt dit mogelijk niet. Verschillende browsers (en browserconfiguraties) blokkeren pop-upvensters namelijk vaak en er kan dus niet worden gegarandeerd dat het venster daadwerkelijk wordt weergegeven. De meeste kans op succes hebt u als u deze methode alleen gebruikt om een pop-upvenster te openen in code die wordt uitgevoerd als een direct resultaat van een gebruikersactie (zoals in een gebeurtenishandler voor een muisklik of het indrukken van een toets.)
Als u in Flash Player 10 en hoger een multipart-inhoudstype gebruikt (bijvoorbeeld 'multipart/form-data') dat een upload bevat (aangegeven met de parameter 'bestandsnaam' in een header 'content-disposition' binnen de POST-body), gelden voor de POST-bewerking de beveiligingsregels die van toepassing zijn op uploads:
- De POST-bewerking moet worden uitgevoerd in reactie op een door de gebruiker geïnitieerde actie, zoals het klikken met de muis of het indrukken van een toets.
- Als bij de POST-bewerking verschillende domeinen betrokken zijn (het doel van de POST-bewerking bevindt zich niet op dezelfde server als het SWF-bestand dat de POST-aanvraag verstuurt), moet de doelserver een URL-beleidsbestand leveren dat interdomeintoegang toestaat.
In het geval van een multipart-inhoudstype is het ook essentieel dat de syntaxis juist is (in overeenstemming met de norm RFC2046). Als de syntaxis ongeldig lijkt te zijn, gelden voor de POST-bewerking de beveiligingsregels die van toepassing zijn op uploads.
In AIR en op mobiele platforms worden de URI-schema's sms: en tel: ondersteund. Op Android worden de URI-schema's vipaccess:, connectpro: en market: ondersteund. De URL-syntaxis wordt bepaald door de conventies voor het desbetreffende platform. Op Android-systemen moet het URI-schema bijvoorbeeld in kleine letters worden ingevoerd. Wanneer u naar een URL navigeert met behulp van een van deze schema's, wordt de URL door de runtime geopend in de standaardtoepassing voor het verwerken van het schema. Als u dus navigeert naar tel:+5555555555
, wordt de telefoonkiezer geopend, waarbij het opgegeven nummer al is ingevoerd. Voor het verwerken van de URL moet een aparte toepassing of een apart hulpprogramma beschikbaar zijn.
De volgende code toont u hoe u de VIP Access- en Connect Pro-toepassingen oproept op 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://"));
Parameters
request:URLRequest — Een object URLRequest dat de URL aangeeft waarnaar moet worden genavigeerd.
Wanneer voor inhoud die wordt uitgevoerd in Adobe AIR de functie | |
window:String (default = null ) — Het browservenster of HTML-frame waarin het document moet worden weergegeven dat wordt aangegeven door de parameter request . U kunt de naam van een specifiek venster opgeven of een van de volgende waarden gebruiken:
Wanneer u geen waarde opgeeft voor deze parameter, wordt een nieuw, leeg venster gemaakt. In de zelfstandige speler kunt u een nieuw ( Opmerking: wanneer code in een SWF-bestand dat in de sandbox Lokaal-met-bestandssysteem wordt uitgevoerd, de functie |
Gegenereerde uitzondering
IOError — De eigenschap digest van het object request is niet null . U moet de eigenschap digest van een object URLRequest alleen instellen wanneer u tijdens het laden van een SWZ-bestand (een component van het Adobe-platform) de methode URLLoader.load() aanroept.
| |
SecurityError — In Flash Player (en in inhoud van een niet-toepassingssandbox in Adobe AIR) wordt deze fout in de volgende situaties gegenereerd:
| |
Error — Als de methode niet wordt aangeroepen in reactie op een gebruikersactie, zoals het klikken met de muis of het indrukken van een toets. Deze vereiste is alleen van toepassing op inhoud in Flash Player en op inhoud van een niet-toepassingssandbox in Adobe AIR.
|
Meer voorbeelden
Verwante API-elementen
Voorbeeld ( Hoe dit voorbeeld te gebruiken )
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 | () | functie |
public function registerClassAlias(aliasName:String, classObject:Class):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Behoudt de klasse (het type) van een object wanneer het object wordt gecodeerd in AMF-indeling (Action Message Format). Wanneer u een object codeert met AMF, slaat deze functie de alias voor de bijbehorende klasse op, zodat u de klasse kunt herstellen bij het decoderen van het object. Wanneer de coderingscontext geen alias voor de klasse van een object heeft geregistreerd, wordt het object gecodeerd als een anoniem object. Wanneer de decoderingscontext niet dezelfde alias heeft geregistreerd, wordt een anoniem object gemaakt voor de gedecodeerde gegevens.
LocalConnection, ByteArray, SharedObject, NetConnection en NetStream zijn voorbeelden van klassen die objecten coderen met AMF.
De coderings- en decoderingscontexten hoeven niet dezelfde klasse voor een alias te gebruiken. Klassen kunnen met opzet worden gewijzigd, mits de doelklasse alle leden bevat waarvoor de bronklasse serienummering toepast.
Parameters
aliasName:String — De alias die moet worden gebruikt.
| |
classObject:Class — De klasse die is gekoppeld aan de opgegeven alias.
|
Gegenereerde uitzondering
TypeError — Wanneer elk van de parameters null is.
|
Verwante API-elementen
Voorbeeld ( Hoe dit voorbeeld te gebruiken )
registerClassAlias()
gebruikt om een alias (com.example.eg
) te registreren voor de klasse ExampleClass. Aangezien een alias wordt geregistreerd voor de klasse, kan het object als een instantie van ExampleClass worden gedeserialiseerd en geeft de code true
als uitvoer. Wanneer de aanroep van registerClassAlias()
zou worden verwijderd, zou de code false
als uitvoer geven.
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 | () | functie |
public function sendToURL(request:URLRequest):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Verzendt een URL-aanvraag naar een server, maar negeert reacties.
Wanneer u de serverreactie wilt onderzoeken, gebruikt u de methode URLLoader.load()
.
U kunt geen verbinding maken met algemeen gereserveerde poorten. Zie "Netwerk-API's beperken" in de Adobe ActionScript 3.0-ontwikkelaarsgids voor een volledige lijst van geblokkeerde poorten.
U kunt voorkomen dat een SWF-bestand deze methode gebruikt door de parameter allowNetworking
in te stellen van de tags object
en embed
op de HTML-pagina die de SWF-inhoud bevat.
Als u in Flash Player 10 en hoger een multipart-inhoudstype gebruikt (bijvoorbeeld 'multipart/form-data') dat een upload bevat (aangegeven met de parameter 'bestandsnaam' in een header 'content-disposition' binnen de POST-body), gelden voor de POST-bewerking de beveiligingsregels die van toepassing zijn op uploads:
- De POST-bewerking moet worden uitgevoerd in reactie op een door de gebruiker geïnitieerde actie, zoals het klikken met de muis of het indrukken van een toets.
- Als bij de POST-bewerking verschillende domeinen betrokken zijn (het doel van de POST-bewerking bevindt zich niet op dezelfde server als het SWF-bestand dat de POST-aanvraag verstuurt), moet de doelserver een URL-beleidsbestand leveren dat interdomeintoegang toestaat.
In het geval van een multipart-inhoudstype is het ook essentieel dat de syntaxis juist is (in overeenstemming met de norm RFC2046). Als de syntaxis ongeldig lijkt te zijn, gelden voor de POST-bewerking de beveiligingsregels die van toepassing zijn op uploads.
Lees voor meer informatie over beveiliging het onderwerp Security in het Flash Player Developer Center.
Parameters
request:URLRequest — Een object URLRequest dat de URL opgeeft waarnaar gegevens moeten worden verzonden.
|
Gegenereerde uitzondering
SecurityError — Lokale niet-vertrouwde SWF-bestanden kunnen niet communiceren met internet. U kunt deze situatie vermijden door dit SWF-bestand opnieuw te classificeren als lokaal-met-netwerk of vertrouwd.
| |
SecurityError — U kunt geen verbinding maken met algemeen gereserveerde poorten. Zie "Netwerk-API's beperken" in de Adobe ActionScript 3.0-ontwikkelaarsgids voor een volledige lijst van geblokkeerde poorten.
|
Voorbeeld ( Hoe dit voorbeeld te gebruiken )
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 } } } }
Wed Jun 13 2018, 11:59 AM Z