Cara Memanggil Flex SWF dari Domain Jarak Jauh Menggunakan Flash (AS3)
Jika Anda pernah bekerja dengan Flash dan Flex, Anda mungkin pernah mengalami SecurityError
yang mengerikan saat mencoba memanggil file SWF dari domain yang berbeda. Kesalahan ini, khususnya Error #2119
, bisa menjadi penghalang dalam perjalanan pengembangan aplikasi Anda, mencegah interaksi yang mulus antara SWF yang dihosting di berbagai domain. Hari ini, kita akan menyelami masalah ini dan mengeksplorasi bagaimana Anda dapat mengatasi isu ini secara efektif menggunakan ActionScript 3 (AS3).
Masalah: Pelanggaran Sandbox Keamanan
Bayangkan Anda memiliki Flex SWF yang dihosting di satu domain, katakanlah, http://www.a.com/a.swf
, dan Anda ingin memuat SWF yang berbeda, http://services.nuconomy.com/n.swf
, dari domain lain. Kode Anda mungkin terlihat seperti ini:
_loader = new Loader();
var req:URLRequest = new URLRequest("http://services.nuconomy.com/n.swf");
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderFinish);
_loader.load(req);
Namun, setelah dijalankan, Anda mendapatkan pengecualian berikut:
SecurityError: Error #2119: Pelanggaran sandbox keamanan: pemanggil http://localhost.service:1234/flashTest/Main.swf tidak dapat mengakses LoaderInfo.applicationDomain yang dimiliki oleh http://www.b.com/b.swf.
Kesalahan ini umumnya terjadi karena Flash Player memberlakukan batasan sandbox keamanan yang mencegah file SWF yang dilayani dari domain yang berbeda berinteraksi satu sama lain secara langsung.
Solusi: Memberikan Akses dengan Security.allowDomain()
Untuk memungkinkan akses lintas domain, Anda perlu secara eksplisit memberikan izin menggunakan metode Security.allowDomain()
dalam ActionScript. Berikut adalah cara untuk secara efektif mengatur solusi ini:
Langkah 1: Ubah SWF yang Anda Coba Muat
Di file SWF yang ingin Anda muat (sebut saja http://services.nuconomy.com/n.swf
), Anda perlu menyertakan potongan kode berikut:
import flash.system.Security;
// Izinkan domain yang akan berinteraksi dengan SWF ini
Security.allowDomain("http://localhost.service:1234");
Langkah 2: Terapkan Security.allowDomain() dengan Benar
- Beberapa Domain: Jika aplikasi Anda perlu mengizinkan akses dari beberapa domain, Anda dapat memanggil
Security.allowDomain()
beberapa kali untuk setiap domain. - Praktik Terbaik: Berhati-hatilah dalam menggunakan
allowDomain()
secara luas karena dapat mengekspos file SWF Anda terhadap kerentanan keamanan. Hanya izinkan domain yang terpercaya.
Langkah 3: Uji Konfigurasi Anda
Setelah Anda memperbarui kode SWF, Anda dapat menjalankan aplikasi Anda lagi. Jika semuanya diatur dengan benar, Anda seharusnya dapat memuat kelas dari SWF jarak jauh tanpa memicu pelanggaran keamanan.
Sumber Daya Tambahan
Untuk pemahaman lebih lanjut, Anda dapat merujuk pada dokumentasi luas Adobe tentang keamanan di Flash. Lihat Dokumen PDF Programming ActionScript 3 Adobe Flex 3, khususnya Bab 27, yang membahas Keamanan Flash Player dan Cross-scripting.
Kesimpulan
Menghadapi pelanggaran sandbox keamanan dapat membuat frustrasi, terutama saat Anda mencoba mengimplementasikan fitur yang meningkatkan fungsionalitas aplikasi Anda. Untungnya, dengan metode Security.allowDomain()
, Anda dapat dengan mudah mengatasi batasan ini dan memungkinkan komunikasi yang mulus di seluruh SWF dari domain yang berbeda. Terapkan dengan hati-hati, pastikan Anda hanya memberikan akses kepada domain terpercaya, dan Anda akan berada di jalur yang benar menuju integrasi yang sukses.
Ingat, praktik pengkodean yang aman sangat penting untuk menjaga integritas aplikasi Anda dalam lingkungan yang terhubung.