Pour permettre à un contenu de l’application d’inter-coder sans risque un contenu chargé à partir d’un emplacement se trouvant hors du répertoire d’installation de l’application, vous pouvez utiliser l’élément
image
ou
iframe
pour charger ce contenu en tant que contenu externe dans le même sandbox de sécurité. Si vous ne voulez pas inter-coder de contenu distant mais que vous souhaitez charger une page de votre application hors du sandbox de l’application, vous pouvez utiliser la même technique, c’est-à-dire spécifier
http://localhost/
ou toute autre valeur inoffensive comme domaine d’origine.
AIR ajoute les nouveaux attributs,
sandboxRoot
et
documentRoot
à l’élément d’image pour vous permettre de spécifier si un fichier d’application chargé dans l’image devrait être mappé sur un sandbox hors application. Les fichiers dont la résolution aboutit à un chemin sous l’URL
sandboxRoot
sont plutôt chargés à partir du répertoire
documentRoot
. Pour des raisons de sécurité, le contenu de l’application chargé ainsi est traité comme s’il avait été chargé à partir de l’URL de
sandboxRoot
.
La propriété
sandboxRoot
spécifie l’URL à utiliser pour déterminer le sandbox et le domaine dans lesquels placer le contenu de l’image. Les modèles d’URL
file:
,
http:
ou
https:
doivent être utilisés. Si vous spécifiez une URL relative, le contenu reste dans le sandbox de l’application.
La propriété
documentRoot
spécifie le répertoire à partir duquel il faut charger le contenu de l’image. Les modèles d’URL
app:
,
http:
ou
app-storage:
doivent être utilisés.
L’exemple ci-dessous mappe le contenu installé dans le sous-répertoire
sandbox
de l’application qui doit s’exécuter dans le sandbox distant et le domaine
www.example.com
:
<iframe
src="http://www.example.com/local/ui.html"
sandboxRoot="http://www.example.com/local/"
documentRoot="app:/sandbox/">
</iframe>
La page
ui.html
pourrait charger un fichier JavaScript à partir du dossier
sandbox
local à l’aide de la balise de script suivante :
<script src="http://www.example.com/local/ui.js"></script>
Elle pourrait également charger un contenu à partir d’un répertoire sur le serveur distant à l’aide d’une balise de script telle que la suivante :
<script src="http://www.example.com/remote/remote.js"></script>
L’URL
sandboxRoot
masquera tout contenu sur la même URL du serveur distant. Dans l’exemple ci-dessus, vous ne pourriez pas avoir accès à un contenu distant, quel qu’il soit, à l’adresse
www.example.com/local/
ou même à l’un de ses sous-répertoires, car AIR remappe la requête sur le répertoire local de l’application. Les requêtes sont remappées, qu’elles proviennent d’une navigation de pages, d’une XMLHttpRequest ou de tout autre moyen de chargement de contenu.