Wychodzące wywołania skryptów oraz wychodzące żądania kierowane do zewnętrznych adresów URL (adresów HTTP, mailto: itd.) realizowane są przez następujące interfejsy API:
-
funkcję
flash.system.fscommand()
;
-
metodę
ExternalInterface.call()
l
-
funkcję
flash.net.navigateToURL()
.
W przypadku treści załadowanych z lokalnego systemu plików wywołania tych metod są udane tylko, jeżeli kod i zawierająca go strona WWW (o ile taka istnieje) znajdują się w lokalnie zaufanym obszarze izolowanym lub obszarze izolowanym aplikacji AIR. Wywołania tych metod kończą się niepowodzeniem, jeśli zawartość znajduje się w lokalnym obszarze izolowanym z obsługą sieci lub lokalnym obszarze izolowanym z systemem plików.
Dla treści, które nie są załadowane lokalnie, wszystkie te wywołania interfejsu API umożliwiają komunikację ze stroną sieci Web, w której treści te są osadzone, z uwzględnieniem wartości parametru AllowScriptAccess opisanego poniżej. Funkcja
flash.net.navigateToURL()
oferuje dodatkową możliwość komunikacji z dowolną otwartą ramką przeglądarki, nie tylko stroną, w której osadzony jest plik SWF. Więcej informacji na temat tej funkcjonalności zawiera sekcja
Korzystanie z funkcji navigateToURL()
.
Parametr
AllowScriptAccess
w kodzie HTML ładującym plik SWF steruje możliwością realizacji żądań z pliku SWF skierowanych do zewnętrznych adresów URL. Parametr ten należy ustawić wewnątrz znacznika PARAM lub EMBED. Jeśli wartość parametru
AllowScriptAccess
nie zostanie określona, plik SWF oraz strona HTML będą mogły komunikować się tylko wówczas, gdy będą znajdować się w tej samej domenie.
Parametr
AllowScriptAccess
może przyjmować jedną z trzech wartości :
"always"
,
"sameDomain"
lub
"never"
.
-
Gdy parametr
allowScriptAccess
ma wartość
"always"
, plik SWF może komunikować się ze stroną HTML, w której jest osadzony, nawet gdy pochodzi z innej domeny niż ta strona.
-
Gdy parametr
AllowScriptAccess
ma wartość
"sameDomain"
, plik SWF może komunikować się ze stroną HTML, w której jest osadzony, tylko wtedy, gdy znajduje się w tej samej domenie, co ta strona. Jest to domyślna wartość parametru
AllowScriptAccess
. Należy użyć tego ustawienia lub nie ustawiać wartości parametru
AllowScriptAccess
, aby uniemożliwić plikowi SWF obsługiwanemu w jednej domenie dostęp do skryptów na stronach HTML w innej domenie.
-
Gdy parametr
AllowScriptAccess
ma wartość
"never"
, plik SWF nie może komunikować się z żadnymi stronami HTML. Ta wartość ma status przestarzałej począwszy od wersji Adobe Flash CS4 Professional. Nie jest zalecane i nie powinno być konieczne, jeśli użytkownik nie będzie obsługiwał niezaufanych plików SWF z własnej domeny. Jeśli zachodzi konieczność udostępniania niezaufanych plików SWF, firma Adobe zaleca utworzenie odrębnej poddomeny i umieszczenie w niej całej niezaufanej treści.
Oto przykład ustawienia znacznika
AllowScriptAccess
na stronie HTML w sposób umożliwiający dostęp do adresów URL w innej domenie:
<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>
Korzystanie z funkcji navigateToURL()
Oprócz opisanego powyżej parametru
allowScriptAccess
, funkcja
navigateToURL()
ma opcjonalny drugi parametr —
target
. Parametr
target
może posłużyć do określenia nazwy okna lub ramki HTML, do którego/której ma być wysyłane żądanie kierowane pod adres URL. Takie żądania podlegają dodatkowym ograniczeniom dotyczącym zabezpieczeń, a ograniczenia te zależą od tego, czy wywołanie
navigateToURL()
jest wywołaniem skryptu, czy nie.
W przypadku wywołań skryptów, takich jak
navigateToURL("javascript: alert('Hello from Flash Player.')")
, obowiązują następujące reguły.
-
Jeśli plik SWF jest plikiem zaufanym lokalnie, żądanie realizowane jest pomyślnie.
-
Jeśli parametr target wskazuje stronę HTML, w której plik SWF jest osadzony, mają zastosowanie opisane wyżej reguły interpretacji parametru
allowScriptAccess
.
-
Jeśli parametr target wskazuje na treść załadowaną z tej samej domeny, co plik SWF, żądanie jest realizowane pomyślnie.
-
Jeśli parametr target wskazuje na treść załadowaną z domeny innej niż domena pliku SWF, a żaden z powyższych dwóch warunków nie jest spełniony, żądanie kończy się niepowodzeniem.
W przypadku instrukcji niebędących wywołaniem skryptu (takich jak żądania HTTP, HTTPS i
mailto:
, żądanie kończy się niepowodzeniem jeśli spełnione są łącznie wszystkie poniższe warunki.:
-
Parametr target jest jednym ze specjalnych słów kluczowych
"_top"
albo
"_parent"
.
-
Plik SWF jest osadzony na stronie sieci Web obsługiwanej przez inną domenę.
-
Plik SWF jest osadzony z parametrem
allowScriptAccess
o wartości innej niż
"always"
.
Więcej informacji
Więcej informacji o dostępie do zewnętrznych adresów URL zawierają następujące sekcje w
Skorowidzu języka ActionScript 3.0 dla platformy Adobe Flash:
|
|
|