Steuern des externen URL-Zugriffs

Flash Player 9 und höher, Adobe AIR 1.0 und höher

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

  • Die Funktion flash.system.fscommand()

  • Die Methode ExternalInterface.call()

  • Die Funktion flash.net.navigateToURL()

Bei Inhalt, der aus dem lokalen Dateisystem geladen wird, sind diese Methodenaufrufe nur erfolgreich, wenn der Code und die entsprechende Webseite (sofern vorhanden) sich in der Sandbox „local-trusted“ oder in der Sicherheits-Sandbox der AIR-Anwendung 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 geladenem Inhalt können alle diese APIs abhängig vom Wert des AllowScriptAccess-Parameters (siehe unten) mit der Webseite kommunizieren, in der 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 Werts ist seit der Veröffentlichung von 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 in den folgenden Abschnitten im ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform :