Kontrollera utgående URL-åtkomst

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Du uppnår utgående skriptning och URL-åtkomst (med hjälp av HTTP URL:er, mailto: o.s.v.) genom att använda följande API:er:

  • Funktionen flash.system.fscommand()

  • Metoden ExternalInterface.call()

  • Funktionen flash.net.navigateToURL()

För innehåll som läses in från det lokala filsystemet kan endast dessa metoder anropas om koden och den webbsidan som fungerar som behållare (om det finns någon) finns i säkerhetssandlådan lokal-tillförlitlig eller säkerhetssandlådan för AIR-programmet. Anrop till dessa metoder misslyckas om innehållet finns i sandlådorna lokal-med-nätverk eller lokal-med-filsystem.

För innehåll som inte läses in lokalt kan alla dessa API:er kommunicera med webbsidan där de är inbäddade, beroende på värdet på AllowScriptAccess-parametern som beskrivs nedan. Funktionen flash.net.navigateToURL() kan också kommunicera med alla öppna webbläsarfönster eller -ramar, inte bara sidan där SWF-filen är inbäddad. Mer information om den här funktionen finns i Använda funktionen navigateToURL() .

Parametern AllowScriptAccess i HTML-koden som läser in en SWF-fil kontrollerar möjligheten att utföra utgående URL-åtkomst inifrån SWF-filen. Ange den här parametern i taggen PARAM eller EMBED. Om du inte anger något värde för AllowScriptAccess kan SWF-filen och HTML-sidan bara kommunicera om båda kommer från samma domän.

Parametern AllowScriptAccess kan anges med någon av dessa tre värden: "always" , "sameDomain" eller "never" .
  • När AllowScriptAccess är inställd på "always" kan SWF-filen kommunicera med HTML-sidan som den är inbäddad i även när SWF-filen kommer från en annan domän än HTML-sidan.

  • När AllowScriptAccess är inställd på "sameDomain" kan SWF-filen bara kommunicera med HTML-sidan som den är inbäddad i när SWF-filen kommer från samma domän som HTML-sidan. Det här värdet är standardvärdet för AllowScriptAccess . Använd den här inställningen, eller ange inte något värde för AllowScriptAccess , om du vill förhindra att en SWF-fil som finns på en domän får tillgång till ett skript på en HTML-sida som kommer från en annan domän.

  • Om AllowScriptAccess ställs in på "never" kan inte SWF-filen kommunicera med någon HTML-sida. Användningen av det här värdet har tagits bort från och med Adobe Flash CS4 Professional. Det rekommenderas inte och bör inte vara nödvändigt om du inte hanterar ej betrodda SWF-filer från din egen domän. Om du måste skicka SWF-filer som du inte litar på rekommenderar Adobe att du skapar en separat underdomän och placerar allt innehåll som du inte litar på där.

Nedan finns ett exempel på hur du ställer in taggen AllowScriptAccess på en HTML-sida så att utgående URL-åtkomst tillåts till en annan domän:

<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> 

Använda funktionen navigateToURL()

Förutom säkerhetsinställningen som anges med parametern allowScriptAccess och som beskrivs ovan, har funktionen navigateToURL() en till parameter – target . Parametern target kan användas för att ange namnet på ett HTML-fönster eller en bildruta att skicka URL-förfrågningen till. Flera säkerhetsbegränsningar gäller för sådana förfrågningar, och begränsningarna varierar beroende på om navigateToURL() används som en skriptsats eller annan typ av programsats.

För skriptsatser, till exempel navigateToURL("javascript: alert('Hälsningar från Flash Player.')") , gäller följande regler.

  • Om SWF-filen är en lokalt betrodd fil, lyckas förfrågningen.

  • Om målet är HTML-sidan där SWF-filen bäddas in, gäller de allowScriptAccess -regler som beskrivs ovan.

  • Om målet innehåller innehåll som läses in från samma domän som SWF-filen, lyckas förfrågningen.

  • Om målet innehåller innehåll som läses in från en annan domän än SWF-filen, och inget av de tidigare villkoren uppfylls, misslyckas förfrågningen.

För andra typer av programsatser än skriptsatser (till exempel HTTP, HTTPS och mailto: ) misslyckas förfrågningen om alla av följande villkor gäller:

  • Målet är något av specialnyckelorden "_top" eller "_parent" , och

  • SWF-filen finns på en webbsida i en annan domän, och

  • SWF-filen bäddas in med ett värde på allowScriptAccess som inte är "always" .

Mer information

Mer information om utgående URL-åtkomst finns följande avsnitt i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen :