Il pacchetto flash.net contiene funzioni a livello di pacchetto per l'apertura di una nuova finestra del browser, l'invio di una richiesta URL a un server e la gestione degli alias di classe.
Funzione | Definito da | ||
---|---|---|---|
Cerca una classe per cui in precedenza è stato registrato un alias tramite una chiamata al metodo registerClassAlias(). | flash.net | ||
Apre o sostituisce una finestra nell'applicazione che contiene il contenitore di Flash Player (di solito un browser). | flash.net | ||
Preserva la classe (tipo) di un oggetto quando l'oggetto viene codificato in Action Message Format (AMF). | flash.net | ||
Invia una richiesta URL a un server, ma ignora qualunque risposta. | flash.net |
getClassByAlias | () | funzione |
public function getClassByAlias(aliasName:String):Class
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Cerca una classe per cui in precedenza è stato registrato un alias tramite una chiamata al metodo registerClassAlias()
.
Questo metodo non interagisce con il metodo flash.utils.getDefinitionByName()
.
Parametri
aliasName:String — L'alias da trovare.
|
Class — La classe associata all'alias fornito. Se non viene trovata, viene generata un'eccezione.
|
Genera
ReferenceError — L'alias non è stato registrato.
|
Elementi API correlati
navigateToURL | () | funzione |
public function navigateToURL(request:URLRequest, window:String = null):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Apre o sostituisce una finestra nell'applicazione che contiene il contenitore di Flash Player (in genere un browser). In Adobe AIR la funzione apre un URL nel browser Web di sistema predefinito
Nota importante sulla sicurezza
Spesso gli sviluppatori passano alla funzione navigateToURL()
valori URL ottenuti da fonti esterne come FlashVars. Gli utenti malintenzionati possono tentare di manipolare queste fonti esterne per sferrare attacchi quali il cross-site scripting. Di conseguenza, gli sviluppatori devono convalidare tutti gli URL prima di passarli a questa funzione.
Una buona convalida dei dati per gli URL può significare cose diverse a seconda dell'utilizzo dell'URL all'interno dell'applicazione complessiva. Tra le tecniche più comuni di convalida dei dati c'è la convalida che lo schema dell'URL sia appropriato. Ad esempio, se consentite involontariamente gli URL javascript: potreste consentire il cross-site scripting. Se convalidate che l'URL si trova all'interno del dominio, potete garantire che il file SWF non può utilizzato come open-redirector da soggetti che eseguono attacchi di phishing. Per ulteriore sicurezza, potete decidere di convalidare il percorso dell'URL e di convalidare che l'URL è conforme alle direttive RFC.
Ad esempio, il codice seguente mostra un semplice esempio di convalida dati mediante il rifiuto di qualunque URL che non inizi con http:// o https:// e la convalida che l'URL si trovi all'interno del nome di dominio. Poiché l'esempio potrebbe non essere appropriato per tutte le applicazioni Web, considerate l'opportunità di eseguire ulteriori controlli sull'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); }
Per il contenuto locale in esecuzione in un browser, le chiamate al metodo navigateToURL()
che specificano uno pseudo protocollo "javascript:"
(attraverso un oggetto URLRequest
passato come primo parametro) sono consentite solo se il file SWF e l'eventuale pagina Web che lo contiene sono nella sandbox di sicurezza attendibile a livello locale. Alcuni browser non supportano l'utilizzo del protocollo javascript con il metodo navigateToURL()
. Considerate piuttosto di utilizzare il metodo call()
dell'API ExternalInterface
per richiamare i metodi JavaScript all'interno della pagina HTML.
In Flash Player e nelle sandbox non di applicazione in Adobe AIR non potete connettervi a porte comunemente riservate. Per un elenco completo di porte bloccate, vedete "Limitazioni delle API di connettività di rete" nella Guida per gli sviluppatori di ActionScript 3.0.
In Flash Player 10 e versioni successive in esecuzione in un browser, potrebbe non essere possibile utilizzare questo metodo a livello di programmazione per aprire una finestra a comparsa. Browser (e configurazioni del browser) differenti potrebbero bloccare le finestre a comparsa in qualsiasi momento; non è possibile garantire la visualizzazione delle finestre. Tuttavia, per avere più possibilità di successo, utilizzate questo metodo per aprire una finestra a comparsa solo in codice che viene eseguita come risultato diretto di un'azione utente (ad esempio, in un gestore di eventi per un clic del mouse o la pressione di un tasto).
In Flash Player 10 e versioni successive, se utilizzate un Content-Type multipart (ad esempio "multipart/form-data") che contiene un caricamento (indicato da un parametro "filename" in un'intestazione "content-disposition" nel corpo POST), l'operazione POST è soggetta alle regole di sicurezza applicate ai caricamenti:
- L'operazione POST deve essere eseguita come risposta a un'azione compiuta dall'utente, come un clic del mouse o la pressione di un tasto.
- Se l'operazione POST è tra più domini (il target POST non si trova sullo stesso server del file SWF che invia la richiesta POST), il server di destinazione deve fornire un file di criteri URL che consenta l'accesso tra più domini.
Inoltre, per qualsiasi Content-Type multipart, la sintassi deve essere valida (in conformità agli standard RFC2046). Se la sintassi non è valida, l'operazione POST è soggetta alle regole di sicurezza applicate ai caricamenti.
In AIR, sulle piattaforme mobili, gli schemi URI sms: e tel: sono supportati. In Android sono supportati gli schemi URI vipaccess:, connectpro: e market:. La sintassi URL è soggetta alla convenzioni della piattaforma. Ad esempio, in Android, lo schema URI deve essere in minuscolo. Quando accedete a un URL utilizzando uno di questi schemi, il runtime apre l'URL nell'applicazione predefinita per la gestione dello schema. Pertanto, se accedete a tel:+5555555555
viene aperta l'applicazione di composizione telefonica con il numero specificato già inserito. Un'applicazione o un'utilità separata, ad esempio un programma di composizione telefonica, deve essere disponibile per l'elaborazione dell'URL.
Il codice seguente mostra come chiamare le applicazioni VIP Access e Connect Pro applicazioni in 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://"));
Parametri
request:URLRequest — Un oggetto URLRequest che specifica l'URL a cui passare.
Per i contenuti in esecuzione in Adobe AIR, quando utilizzate la funzione | |
window:String (default = null ) — La finestra del browser o il frame HTML in cui visualizzare il documento indicato dal parametro request . È possibile immettere il nome di una finestra specifica oppure utilizzare uno dei valori seguenti:
Se non si specifica un valore per questo parametro, viene creata una nuova finestra vuota. Nel lettore autonomo, è possibile specificare una nuova finestra ( Nota: quando il codice di un file SWF che è in esecuzione nella sandbox locale con accesso al file system (local-with-filesystem) chiama la funzione |
Genera
IOError — La proprietà digest dell'oggetto request non è null . Dovete impostare solo la proprietà digest di un oggetto URLRequest per l'utilizzo chiamando il metodo URLLoader.load() durante il caricamento di un file SWZ (un componente della piattaforma Adobe).
| |
SecurityError — In Flash Player (e in contenuto di sandbox non di applicazione in Adobe AIR) questo errore viene generato nelle situazioni seguenti:
| |
Error — Se il metodo non viene chiamato in seguito a un'azione dell'utente, come un evento del mouse o della tastiera. Questo requisito si applica solo a contenuto di Flash Player e a contenuto di sandbox non di applicazione in Adobe AIR.
|
Altri esempi
Elementi API correlati
Esempio ( Come utilizzare questo esempio )
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 | () | funzione |
public function registerClassAlias(aliasName:String, classObject:Class):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Preserva la classe (tipo) di un oggetto quando l'oggetto viene codificato in Action Message Format (AMF). Quando codificate un oggetto in AMF, questa funzione salva l'alias per la relativa classe per consentire il ripristino della classe quando si decodifica l'oggetto. Se il contesto di codifica non ha registrato un alias per la classe di un oggetto, l'oggetto viene codificato come anonimo. In modo analogo, se nel contesto di decodifica non è registrato lo stesso alias, per i dati decodificati viene creato un oggetto anonimo.
LocalConnection, ByteArray, SharedObject, NetConnection e NetStream sono esempi di classe che codificano gli oggetti in AMF.
Non è necessario che i contesti di codifica e decodifica utilizzino la stessa classe per un alias; possono modificare intenzionalmente le classi, a condizione che la classe di destinazione contenga tutti i membri che vengono serializzati dalla classe di origine.
Parametri
aliasName:String — L'alias da utilizzare.
| |
classObject:Class — La classe associata all'alias fornito.
|
Genera
TypeError — Se uno dei parametri è null .
|
Elementi API correlati
Esempio ( Come utilizzare questo esempio )
registerClassAlias()
per registrare un alias (com.example.eg
) per la classe ExampleClass. Poiché un alias è registrato per la classe, l'oggetto può essere deserializzato come istanza ExampleClass e il codice restituisce true
. Se la chiamata a registerClassAlias()
viene rimossa, il codice restituiscefalse
.
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 | () | funzione |
public function sendToURL(request:URLRequest):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Invia una richiesta URL a un server, ma ignora qualunque risposta.
Per esaminare la risposta del server, utilizzate piuttosto il metodo URLLoader.load()
.
Non potete collegarvi alle porte comunemente riservate. Per un elenco completo di porte bloccate, vedete "Limitazioni delle API di connettività di rete" nella Guida per gli sviluppatori di ActionScript 3.0.
Potete impedire che un file SWF utilizzi questo metodo impostando il parametro allowNetworking
dei tag object
ed embed
nella pagina HTML che include il contenuto SWF.
In Flash Player 10 e versioni successive, se utilizzate un Content-Type multipart (ad esempio "multipart/form-data") che contiene un caricamento (indicato da un parametro "filename" in un'intestazione "content-disposition" nel corpo POST), l'operazione POST è soggetta alle regole di sicurezza applicate ai caricamenti:
- L'operazione POST deve essere eseguita come risposta a un'azione compiuta dall'utente, come un clic del mouse o la pressione di un tasto.
- Se l'operazione POST è tra più domini (il target POST non si trova sullo stesso server del file SWF che invia la richiesta POST), il server di destinazione deve fornire un file di criteri URL che consenta l'accesso tra più domini.
Inoltre, per qualsiasi Content-Type multipart, la sintassi deve essere valida (in conformità agli standard RFC2046). Se la sintassi non è valida, l'operazione POST è soggetta alle regole di sicurezza applicate ai caricamenti.
Per ulteriori informazioni sulla sicurezza, vedete l'argomento sulla sicurezza nel Centro per sviluppatori di Flash Player .
Parametri
request:URLRequest — Un oggetto URLRequest che specifica l'URL a cui inviare i dati.
|
Genera
SecurityError — I file SWF non attendibili locali potrebbero non essere in grado di comunicare con Internet. Questa situazione può essere evitata riclassificando il file SWF come file locale con utilizzo in rete o come attendibile.
| |
SecurityError — Non potete collegarvi alle porte comunemente riservate. Per un elenco completo di porte bloccate, vedete "Limitazioni delle API di connettività di rete" nella Guida per gli sviluppatori di ActionScript 3.0.
|
Esempio ( Come utilizzare questo esempio )
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, 03:02 PM Z