Obiekty udostępnione

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Program Flash Player umożliwia korzystanie z obiektów współużytkowanych , które są obiektami ActionScript istniejącymi trwale poza plikiem SWF — lokalnie w systemie plików użytkownika lub zdalnie na serwerze RTMP. Obiekty współużytkowane, podobnie jak inne multimedia w programie Flash Player, są odseparowane w obszarach izolowanych. Jednak model obszarów izolowanych dla obiektów współużytkowanych jest nieco inny, ponieważ obiekty współużytkowane nie są zasobami przekazywanymi między różnymi domenami. Obiekty takie są zawsze pobierane z magazynu obiektów współużytkowanych przypisanego do domeny pliku SWF wywołującego metody klasy SharedObject. Zwykle magazyn obiektów udostępnionych jest określony jeszcze precyzyjniej niż domena pliku SWF: Domyślnie każdy plik SWF korzysta z magazynu obiektów udostępnionych przypisanego do całego źródłowego adresu URL tego pliku. Więcej informacji na temat obiektów współużytkowanych zawiera sekcja Obiekty udostępnione .

W pliku SWF można używać parametru localPath metod SharedObject.getLocal() i SharedObject.getRemote() w celu skorzystania z magazynu obiektów współużytkowanych powiązanego tylko z częścią adresu URL pliku. W ten sposób plik SWF może zezwolić na współużytkowanie obiektów z innymi plikami SWF pochodzącymi z innych adresów URL. Nawet jeśli przekażemy znak '/' w parametrze localPath , będzie on nadal określał magazyn obiektów współużytkowanych właściwy dla konkretnej domeny pliku.

Użytkownicy mogą ograniczyć dostęp do obiektów współużytkowanych za pomocą okna dialogowego Ustawienia Flash Player lub Menedżera ustawień. Domyślna maksymalna objętość tworzonych obiektów współużytkowanych wynosi 100 KB na domenę. Administratorzy i użytkownicy mogą także tworzyć ograniczenia możliwości zapisu w systemie plików. Więcej informacji zawarto w sekcjach Elementy sterujące dla administratorów i Mechanizmy nadzoru użytkowników .

Można zadeklarować, że dany obiekt współużytkowany jest bezpieczny, podając wartość true dla parametru secure metody SharedObject.getLocal() lub SharedObject.getRemote() . Należy zwrócić uwagę na następujące uwarunkowania dotyczące parametru secure :

  • Jeśli ten parametr ma wartość true , program Flash Player utworzy nowy bezpieczny obiekt współużytkowany lub pobiera odwołanie do istniejącego bezpiecznego obiektu współużytkowanego. Odczytać z lub zapisać do tego bezpiecznego obiektu współużytkowanego mogą tylko pliki SWF dostarczone za pomocą protokołu HTTPS, który wywołuje metodę SharedObject.getLocal() z parametrem secure o wartości true .

  • Jeśli ten parametr ma wartość false , program Flash Player utworzy nowy obiekt współużytkowany lub pobierze odwołanie do istniejącego obiektu współużytkowanego, z którego mogą czytać lub do którego mogą zapisywać pliki SWF dostarczone za pomocą połączeń protokołu innego niż HTTPS.

Jeśli plik SWF nie pochodzi z adresu URL HTTPS określenie wartości true dla parametru secure metody SharedObject.getLocal() lub SharedObject.getRemote() spowoduje wyjątek SecurityError.

Wybór magazynu obiektów współużytkowanych zależy od źródłowego adresu URL pliku SWF. Ta zasada obowiązuje nawet wówczas, gdy plik SWF nie pochodzi z prostego adresu URL, tj. przy ładowaniu przez import lub ładowaniu dynamicznym. Ładowanie przez import to sytuacja, w której ładujemy plik SWF z właściwością LoaderContext.securityDomain ustawioną na SecurityDomain.currentDomain . Wówczas załadowany plik SWF będzie miał pseudoadres URL rozpoczynający się od domeny ładującego pliku SWF, po której następować będzie faktyczny źródłowy adres URL. Ładowanie dynamiczne oznacza ładowanie pliku SWF przy użyciu metody Loader.loadBytes() . W tej sytuacji załadowany plik SWF będzie miał pseudoadres URL rozpoczynający się od pełnego adresu URL pliku ładującego, po którym będzie następował identyfikator w postaci liczby całkowitej. Zarówno przy ładowaniu przez import, jak i przy ładowaniu dynamicznym możliwe jest odczytanie pseudoadresu URL pliku SWF z właściwości LoaderInfo.url . Przy wyborze magazynu obiektów współużytkowanych pseudoadres URL jest traktowany dokładnie tak, jak prawdziwy adres URL. Można określić parametr localPath obiektu współużytkowanego zawierający całość lub część pseudoadresu URL.

Użytkownicy i administratorzy mają możliwość zablokowania użycia obiektów współużytkowanych z innych źródeł . Chodzi tutaj o używanie obiektów współużytkowanych przez plik SWF wykonywany w przeglądarce sieci Web, gdy źródłowy adres URL tego pliku wskazuje na inną domenę niż domena widoczna na pasku adresu przeglądarki. Użytkownicy i administratorzy mogą zdecydować się na zablokowanie użycia obiektów współużytkowanych z innych źródeł, aby chronić prywatność i uniemożliwić śledzenie międzydomenowe. Chcąc uniknąć tego ograniczenia, należy zagwarantować ładowanie pliku SWF korzystającego z obiektów współużytkowanych wyłącznie do takich struktur stron HTML, w których jego domena będzie taka sama, jak domena widoczna na pasku adresu przeglądarki. Próba użycia obiektów współużytkowanych z pliku SWF pochodzącego z innego źródła, a użycie takich obiektów jest zablokowane, spowoduje zwrócenie wartości null z metod SharedObject.getLocal() i SharedObject.getRemote() . Więcej informacji na stronie www.adobe.com/products/flashplayer/articles/thirdpartylso .