Les API suivantes gèrent la génération de scripts et l’accès URL externes (par le biais d’URL HTTP, de mailto:, etc.) :
-
La fonction
flash.system.fscommand()
-
La méthode
ExternalInterface.call()
-
La fonction
flash.net.navigateToURL()
Si un contenu est chargé à partir du système de fichiers local, les appels à ces méthodes n’aboutissent que si le code et la page Web qui le contient (le cas échéant) se trouvent dans le sandbox approuvé localement ou le sandbox d’application AIR. Ils échouent si le contenu provient du sandbox local avec accès au réseau ou local avec système de fichiers.
Si le contenu n’est pas chargé localement, toutes ces API peuvent communiquer avec la page Web à laquelle elles sont intégrées, selon la valeur du paramètre AllowScriptAccess décrit ci-dessous. La fonction
flash.net.navigateToURL()
peut en outre communiquer avec toute fenêtre ou tout cadre de navigateur ouvert, pas seulement avec la page contenant le fichier SWF. Pour plus d’informations à ce sujet, voir
Utilisation de la fonction navigateToURL()
.
Le paramètre
AllowScriptAccess
du code HTML qui charge un fichier SWF permet de contrôler l’accès URL externe à partir du fichier SWF. Définissez ce paramètre dans la balise PARAM ou EMBED. Si la valeur du paramètre
AllowScriptAccess
n’est pas définie, le fichier SWF et la page HTML peuvent uniquement communiquer s’ils appartiennent au même domaine.
Le paramètre
AllowScriptAccess
prend en charge trois valeurs :
"always"
,
"sameDomain"
et
"never"
.
-
Lorsque le paramètre
AllowScriptAccess
est défini sur
"always"
, le fichier SWF peut communiquer avec la page HTML à laquelle il est intégré, même s’il ne provient pas du même domaine qu’elle.
-
Lorsque le paramètre
AllowScriptAccess
est défini sur
"sameDomain"
, le fichier SWF peut communiquer avec la page HTML à laquelle il est intégré, uniquement s’il provient du même domaine. Il s’agit de la valeur par défaut du paramètre
AllowScriptAccess
. Utilisez ce réglage ou ne définissez pas la valeur du paramètre
AllowScriptAccess
pour empêcher un fichier SWF d’un domaine d’accéder à un script sur une page HTLM issue d’un autre domaine.
-
Lorsque le paramètre
AllowScriptAccess
est défini sur
"never"
, le fichier SWF ne peut communiquer avec aucune page HTML. L’utilisation de cette valeur est désapprouvée depuis la sortie d’Adobe Flash CS4 Professional. Elle n’est pas recommandée et elle ne devrait pas s’avérer nécessaire si vous ne servez pas de fichiers SWF non approuvés à partir de votre propre domaine. Si vous devez envoyer des fichiers SWF non approuvés, Adobe vous conseille de créer un sous-domaine distinct et d’y placer l’ensemble du contenu non approuvé.
L’exemple suivant illustre le réglage de la balise
AllowScriptAccess
dans une page HTML pour autoriser l’accès URL externe à un autre domaine :
<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>
Utilisation de la fonction navigateToURL()
Outre le réglage de sécurité spécifié par le paramètre
allowScriptAccess
(voir plus haut), la fonction
navigateToURL()
propose un autre paramètre facultatif :
target
. Le paramètre
target
permet de spécifier le nom d’une fenêtre ou d’un cadre HTML auquel envoyer la requête URL. D’autres restrictions de sécurité s’appliquent à de telles requêtes et elles varient selon que la fonction
navigateToURL()
est utilisée comme instruction de programmation ou non.
Pour les instructions de programmation, telles que
navigateToURL("javascript: alert('Hello from Flash Player.')")
, les règles suivantes s’appliquent :
-
Si le fichier SWF est un fichier local approuvé, la requête aboutit.
-
Si la cible est la page HTML à laquelle le fichier SWF est intégré, les règles
allowScriptAccess
décrites plus haut s’appliquent.
-
Si la cible contient du contenu issu du même domaine que le fichier SWF, la requête aboutit.
-
Si la cible contient du contenu issu d’un autre domaine que le fichier SWF et qu’aucune des deux conditions précédentes n’est remplie, la requête échoue.
Pour les instructions autres que les instructions de programmation (telles que HTTP, HTTPS et
mailto:
), la requête échoue si toutes les conditions suivantes sont réunies :
-
La cible correspond à un des mots clés spéciaux
"_top"
ou
"_parent"
-
Le fichier SWF se trouve dans une page Web hébergée dans un domaine différent et
-
Le paramètre
allowScriptAccess
n’est pas défini sur
"always"
dans le fichier SWF