Steuern des externen URL-Zugriffs



Für die externe Skripterstellung und den externen URL-Zugriff (durch die Verwendung von HTTP-URLs wie „mailto:“ usw.) werden die folgenden ActionScript 3.0-APIs verwendet:

  • Die Funktion flash.system.fscommand()

  • Die Methode ExternalInterface.call()

  • Die Funktion flash.net.navigateToURL()

Wenn SWF-Dateien lokal ausgeführt werden, sind Aufrufe dieser Methoden nur dann erfolgreich, wenn sich die SWF-Datei und die entsprechende Webseite (sofern eine vorhanden ist) in der Sicherheits-Sandbox „local-trusted“ befinden. Aufrufe dieser Methoden schlagen fehl, wenn sich der Inhalt in der „local-with-networking“- oder der „local-with-filesystem“-Sandbox befindet.

Bei nicht lokal ausgeführten SWF-Dateien können alle diese APIs abhängig vom Wert des AllowScriptAccess-Parameters (siehe unten) mit der Webseite kommunizieren, in die sie eingebettet sind. Die Funktion flash.net.navigateToURL() kann zudem mit allen geöffneten Browserfenstern oder Frames kommunizieren. Sie ist nicht auf die Seite beschränkt, in der die SWF-Datei eingebettet ist. Weitere Informationen zu dieser Funktion finden Sie unter Verwenden der navigateToURL()-Funktion.

Der AllowScriptAccess-Parameter in dem HTML-Code, der eine SWF-Datei lädt, steuert den externen URL-Zugriff aus einer SWF-Datei heraus. Legen Sie diesen Parameter in den Tags PARAM oder EMBED fest. Wenn Sie für AllowScriptAccess keinen Wert angeben, können die SWF-Datei und die HTML-Seite nur miteinander kommunizieren, wenn sie aus der gleichen Domäne stammen.

Der Parameter AllowScriptAccess kann folgende Werte annehmen: „always", „sameDomain" oder „never".
  • Wenn AllowScriptAccess auf „always" festgelegt ist, kann die SWF-Datei mit der HTML-Seite, in die sie eingebettet ist, auch dann kommunizieren, wenn die SWF-Datei aus einer anderen Domäne als die HTML-Seite stammt.

  • Wenn AllowScriptAccess auf „sameDomain" festgelegt ist, kann die SWF-Datei mit der HTML-Seite, in die sie eingebettet ist, nur dann kommunizieren, wenn die SWF-Datei aus der gleichen Domäne wie die HTML-Seite stammt. Dies ist der Standardwert für AllowScriptAccess. Verwenden Sie diese Einstellung, oder geben Sie keinen Wert für AllowScriptAccess an, um zu verhindern, dass eine SWF-Datei in einer Domäne auf eine HTML-Seite aus einer anderen Domäne zugreift.

  • Wenn AllowScriptAccess auf „never" festgelegt ist, kann die SWF-Datei mit keiner HTML-Seite kommunizieren. Die Verwendung dieses Wertes ist in Adobe Flash CS4 Professional veraltet. Von der Verwendung dieses Werts wird abgeraten und er sollte nicht erforderlich sein, wenn Sie keine nicht vertrauenswürdigen SWF-Dateien von Ihrer Domäne aus bereitstellen. Falls Sie nicht vertrauenswürdige SWF-Dateien bereitstellen müssen, empfiehlt es sich, eine separate Unterdomäne zu erstellen und alle nicht vertrauenswürdigen Inhalte dort abzulegen.

Das folgende Beispiel veranschaulicht, wie Sie den Tag AllowScriptAccess in einer HTML-Seite so einstellen, dass ein externer URL-Zugriff auf eine andere Domäne möglich ist:

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

Verwenden der navigateToURL()-Funktion

Zusätzlich zu dem Parameter allowScriptAccess zum Angeben von Sicherheitseinstellungen (siehe oben) verfügt die Funktion navigateToURL() über einen optionalen zweiten Parameter: target. Mit dem Parameter target können Sie ein HTML-Fenster oder einen Frame angeben, an das bzw. den die URL-Anforderung gesendet werden soll. Für diese Anforderungen gelten zusätzliche Sicherheitseinschränkungen. Diese variieren in Abhängigkeit davon, ob navigateToURL() als Scripting- oder Non-Scripting-Anweisung verwendet wird.

Für Scripting-Anweisungen (z. B. navigateToURL("javascript: alert('Hello from Flash Player.')")) gelten die folgenden Regeln.

  • Wenn es sich bei der SWF-Datei um eine lokal vertrauenswürdige Datei handelt, ist die Anforderung erfolgreich.

  • Wenn als Ziel die HTML-Seite verwendet wird, in die die SWF-Datei eingebettet ist, gelten die oben erläuterten allowScriptAccess-Regeln.

  • Wenn das Ziel Inhalte enthält, die aus der gleichen Domäne wie die SWF-Datei geladen wurden, ist die Anforderung erfolgreich.

  • Wenn das Ziel Inhalte enthält, die aus einer anderen Domäne als die SWF-Datei geladen wurden, und die beiden vorherigen Bedingungen nicht erfüllt sind, schlägt die Anforderung fehl.

Bei Non-Scripting-Anweisungen (z. B. HTTP, HTTPS und mailto:) schlägt die Anforderung fehl, wenn die folgenden Bedingungen zutreffen:

  • Das Ziel entspricht einem der speziellen Schlüsselwörter "_top" oder "_parent"; UND

  • Die SWF-Datei ist Bestandteil einer Webseite in einer anderen Domäne; UND

  • Die SWF-Datei wurde mit einem Wert für allowScriptAccess eingebettet, der nicht „always" lautet.

Weitere Informationen

Weitere Informationen zum externen URL-Zugriff finden Sie im Komponenten-Referenzhandbuch für ActionScript 3.0 in den folgenden Abschnitten:

  • Funktion flash.system.fscommand()

  • Methode call() der ExternalInterface-Klasse

  • Funktion flash.net.navigateToURL()