Uitgaande URL-toegang beheren

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Uitgaande scripting en URL-toegang (met behulp van HTTP URL's, mailto:, enzovoort) kan worden bereikt met behulp van de volgende API's:

  • De functie flash.system.fscommand()

  • De methode ExternalInterface.call()

  • De functie flash.net.navigateToURL()

Als de inhoud wordt geladen van het lokale bestandssysteem, kunnen deze methoden alleen succesvol worden aangeroepen als de code en de webpagina waarin de code is opgenomen (indien aanwezig) zich in de beveiligingssandboxen Lokaal-vertrouwd of AIR-toepassing bevinden. Aanroepen van deze methoden mislukken als de inhoud zich bevindt in de sandbox Lokaal-met-bestandssysteem of Lokaal-met-netwerk.

Als de inhoud niet lokaal is geladen, kunnen al deze API's communiceren met de webpagina waarin ze ingesloten zijn, afhankelijk van de waarde van de parameter AllowScriptAccess (zie hieronder voor een beschrijving). De functie flash.net.navigateToURL() heeft de extra optie om te communiceren met elk geopend browservenster of -frame, niet alleen met de pagina waarin het SWF-bestand is ingesloten. Zie De functie navigateToURL() gebruiken voor meer informatie over deze functionaliteit.

De parameter AllowScriptAccess in de HTML-code voor het laden van een SWF-bestand bepaalt of uitgaande scripts mogelijk zijn vanuit een SWF-bestand. Stel deze parameter in de tag PARAM of EMBED in. Als er geen waarde is ingesteld voor AllowScriptAccess , kunnen het SWF-bestand en de HTML-pagin alleen communiceren als ze van hetzelfde domein afkomstig zijn.

De parameter AllowScriptAccess kan een van de volgende drie mogelijke waarden hebben: "always" , "sameDomain" of "never" .
  • Wanneer AllowScriptAccess is ingesteld op "always" , kan het SWF-bestand communiceren met de HTML-pagina waarin het is ingesloten, zelfs als het SWF-bestand afkomstig is van een ander domein dan de HTML-pagina.

  • Wanneer AllowScriptAccess is ingesteld op "sameDomain" , kan het SWF-bestand alleen communiceren met de HTML-pagina waarin het is ingesloten als het SWF-bestand afkomstig is van hetzelfde domein als de HTML-pagina. Deze waarde is de standaardwaarde voor AllowScriptAccess . Gebruik deze instelling of stel geen waarde in voor AllowScriptAccess om te voorkomen dat een SWF-bestand dat op het ene domein wordt aangeboden, toegang krijgt tot een script in een HTML-pagina die uit een ander domein afkomstig is.

  • Wanneer allowScriptAccess is ingesteld op "never" , kan het SWF-bestand niet communiceren met een HTML-pagina. Het gebruik van deze waarde is afgekeurd sinds de release van Adobe Flash CS4 Professional. Het gebruik ervan wordt niet aanbevolen en is ook niet nodig als u vanuit uw domein niet met niet-vertrouwde SWF-bestanden werkt. Als u wel niet-vertrouwde SWF-bestanden beschikbaar moet stellen, raadt Adobe u aan een afzonderlijk subdomein te maken en alle niet-vertrouwde inhoud daar te plaatsen.

Hier is een voorbeeld van het instellen van de tag AllowScriptAccess in een HTML-pagina zodat uitgaande URL-toegang naar een ander domein wordt toegestaan:

<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'> 
<param name='AllowScriptAccess' value='always'/> 
<param name='src' value=''MyMovie.swf'/> 
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/> 
</object> 

De functie navigateToURL() gebruiken

Naast de beveiligingsinstelling die is opgegeven met de parameter allowScriptAccess die hierboven wordt beschreven, heeft de functie navigateToURL() een optionele tweede parameter: target . De parameter target kan worden gebruikt om de naam van een HTML-venster of -frame op te geven waarnaar het URL-verzoek moet worden verzonden. Voor zulke verzoeken gelden extra beveiligingsbeperkingen en deze hangen af van de vraag of navigateToURL() wordt gebruikt als een scripting- of niet-scriptinginstructie.

Voor scriptinginstructies, zoals navigateToURL("javascript: alert('Hello from Flash Player.')") gelden de volgende regels.

  • Als het SWF-bestand een lokaal vertrouwd bestand is, wordt het verzoek gehonoreerd.

  • Als het doel de HTML-pagina is waarin het SWF-bestand is ingesloten, gelden de allowScriptAccess -regels die hierboven zijn beschreven.

  • Als het doel inhoud bevat die is geladen van hetzelfde domein als het SWF-bestand, wordt het verzoek gehonoreerd.

  • Als het doel inhoud bevat die is geladen uit een ander domein dan het SWF-bestand en als aan geen van de eerder genoemde twee voorwaarden wordt voldaan, wordt de aanvraag niet gehonoreerd.

Voor niet-scriptinginstructies (zoals HTTP, HTTPS en mailto: wordt de aanvraag niet gehonoreerd als aan alle volgende voorwaarden wordt voldaan:

  • Het doel is een van de speciale trefwoorden "_top" of "_parent" en

  • het SWF-bestand bevindt zich in een webpagina die afkomstig is uit een ander domein en

  • het SWF-bestand is ingesloten met een waarde voor allowScriptAccess die niet "always" is.

Voor meer informatie

Voor meer informatie over uitgaande URL-toegang gaat u naar de volgende gedeelten in de Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform: