flash.net paketi, yeni bir tarayıcı penceresi açılması, bir sunucuya URL isteği gönderilmesi ve sınıf diğer adlarıyla ilgilenilmesi için paket düzeyinde işlevler içerir.
İşlev | Tanımlayan: | ||
---|---|---|---|
Daha önce registerClassAlias() yöntemi çağrılarak takma adı kaydedilmiş bir sınıfı arar. | flash.net | ||
Flash Player kabının bulunduğu uygulamada bir pencere açar veya değiştirir. (Genellikle bir tarayıcıdır.) | flash.net | ||
Bir nesne Action Message Format (AMF) olarak kodlandığında nesnenin sınıfını (tür) korur. | flash.net | ||
Bir sunucuya bir URL isteği gönderir, ancak yanıtları yok sayar. | flash.net |
getClassByAlias | () | işlev |
public function getClassByAlias(aliasName:String):Class
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Daha önce registerClassAlias()
yöntemi çağrılarak takma adı kaydedilmiş bir sınıfı arar.
Bu yöntem flash.utils.getDefinitionByName()
yöntemiyle etkileşime geçmez.
Parametreler
aliasName:String — Bulunacak takma ad.
|
Class — İlgili takma adla ilişkili sınıf. Bulunamazsa bir istisna atılır.
|
Atar
ReferenceError — Takma ad kaydedilmemiş.
|
İlgili API Öğeleri
navigateToURL | () | işlev |
public function navigateToURL(request:URLRequest, window:String = null):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Flash Player kabının bulunduğu uygulamada bir pencere açar veya değiştirir. (Genellikle bir tarayıcıdır.) Adobe AIR'de işlem, varsayılan sistem web tarayıcısında bir URL açar
Önemli Güvenlik Notu
Geliştiriciler genellikle FlashVars gibi harici kaynaklardan alınan navigateToURL()
işlevine URL değerleri iletir. Saldırganlar, siteler arası komut dosyası oluşturma gibi saldırıları gerçekleştirmek için bu harici kaynakları değiştirmeye çalışabilirler. Bu nedenle, geliştiriciler URL'leri işleve iletmeden önce doğrulamalıdır.
URL'ler için iyi bir veri doğrulaması, URL'nin genel uygulama içinde kullanımına bağlı olarak farklı şeyler ifade edebilir. En yaygın veri doğrulama teknikleri, URL'nin uygun bir şemaya ait olduğunun doğrulanmasını içerir. Örneğin, JavaScript'e istenmeden izin verilmesi: URL'ler siteler arası komut dosyası oluşturmaya yol açabilir. URL'nin etki alanınız içinde olduğunun doğrulanması, SWF dosyasının kimlik avı saldırıları yapan insanlar tarafından açık bir yeniden yönlendirici olarak kullanılamayacağını garanti eder. Ek güvenlik için, URL'nin yolunu doğrulamayı ve URL'nin RFC yönergelerine uyduğunu doğrulamayı seçebilirsiniz.
Örneğin, aşağıdaki kod, :// veya https:// ile başlamayan tüm URL'lerin reddedilmesiyle ve URL'nin kendi etki alanı adınızın içinde bulunduğunun doğrulanması ve gerçekleştirilen veri doğrulamasının basit bir örneğini gösterir. Bu örnek, tüm web uygulamaları için uygun olmayabilir ve URL'lere karşı ek kontrollerin gerekli olup olmadığını düşünmeniz gerekebilir.
// AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name. function checkProtocol (flashVarURL:String):Boolean { // Get the domain name for the SWF if it is not known at compile time. // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string. var my_lc:LocalConnection = new LocalConnection(); var domainName:String = my_lc.domain; // Build the RegEx to test the URL. // This RegEx assumes that there is at least one "/" after the // domain. http://www.mysite.com will not match. var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/"); var result:Object = pattern.exec(flashVarURL); if (result == null || result[1] != domainName || flashVarURL.length >= 4096) { return (false); } return (true); }
Bir tarayıcıda çalışan local içeriğinde, "javascript:"
pseudo-protokolünü belirten navigateToURL()
öğesine yapılan çağrılara (ilk parametre olarak iletilen URLRequest
nesnesi üzerinden) yalnızca SWF dosyasının ve içeren dosyanın (varsa) yerel güvenilir sanal alanda olması durumunda izin verilir. Bazı tarayıcılar javascript protokolünün navigateToURL()
yöntemiyle kullanılmasını desteklemez. Bunun yerine, çevreleyen HTML sayfası içerisindeki JavaScript yöntemlerini çağırmak için ExternalInterface
API öğesinin call()
yöntemini kullanmayı düşünün.
Flash Player'da ve Adobe AIR'da uygulama dışı sanal alanlarda, genel olarak ayrılan bağlantı noktalarına bağlanamazsınız. Engellenen bağlantı noktalarının tam listesi için, bkz. "Ağ İletişimi API'lerini Kısıtlama", ActionScript 3.0 Geliştirici Kılavuzu.
Bir tarayıcıda çalışan Flash Player 10 ve sonrasında, bir açılır pencere açmak için programlama yoluyla bu yöntemin kullanılması başarılı olmayabilir. Çeşitli tarayıcılar (ve tarayıcı konfigürasyonları), herhangi bir anda açılır pencereleri engelleyebilir; tüm açılır pencerelerin görüntüleneceği garanti edilemez. Ancak bunu başarmanın en iyi yolu, yalnızca kullanıcı eyleminin doğrudan sonucu olarak çalıştırılan bir kodda (örneğin, fare tıklatması veya tuş basışı olayı gibi bir olay işleyicisinde) açılır pencere açmak için bu yöntemin kullanılmasıdır.
Flash Player 10 ve sonrasında, yükleme (POST gövdesi içinde "content-disposition" başlığında "filename" parametresiyle belirtilir) içeren çok bölümlü bir Content-Type (örneğin, "multipart/form-data") kullanırsanız, POST işlemi, yüklemelere uygulanan güvenlik kurallarına tabidir:
- Fare tıklatma veya tuş basışı gibi kullanıcı tarafından başlatılan bir eyleme yanıt olarak POST işleminin gerçekleştirilmesi gerekir.
- POST işlemi etki alanları arasıysa (POST hedefi, POST isteğini gönderen SWF dosyasıyla aynı sunucuda değilse), hedef sunucunun etki alanları arası erişime izin veren bir URL ilke dosyası sağlaması gerekir.
Ayrıca çok bölümlü herhangi bir Content-Type için sözdiziminin geçerli olması gerekir (RFC2046 standartlarına göre). Sözdizimi geçersiz görünüyorsa, POST işlemi, yüklemelere uygulanan güvenlik kurallarına tabi olur.
AIR'de, mobil platformlarda sms: ve tel: URI şemaları desteklenir. Android'de, vipaccess:, connectpro:, ve market: URI şemaları desteklenir. URL sözdizimi platform kurallarına tabidir. Örneğin, Android üzerinde, URI şeması küçük harfli olmalıdır. Bu şemalardan birini kullanan URL'ye gittiğinizde, çalışma zamanı şemayı işlemek için URL'yi varsayılan uygulamada açar. Bu yüzden, tel:+5555555555
öğesine gitmek belirtilen numara girilmiş biçimde numara çeviricisini açar. URL'yi işlemek için numara çeviricisi gibi ayrı bir uygulama veya yardımcı program bulunmalıdır.
Aşağıdaki kod, Android'de VIP Access ve Connect Pro uygulamalarını nasıl çağırabileceğinizi gösterir:
//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
Parametreler
request:URLRequest — Gidilecek URL'yi belirten bir URLRequest nesnesi.
Adobe AIR'de çalışan içerik için, | |
window:String (default = null ) — request parametresi tarafından gösterilen belgenin görüntüleneceği tarayıcı penceresi veya HTML karesi. Belirli bir pencerenin adını girebilir veya şu değerlerden birini kullanabilirsiniz:
Bu parametre için bir değer belirtmezseniz yeni bir boş pencere oluşturulur. Tek başına çalışabilen oynatıcıda, yeni bir ( Not: Dosya sistemine sahip yerel sanal alanda çalışan bir SWF dosyasındaki kod |
Atar
IOError — request nesnesinin digest özelliği null değildir. URLRequest nesnesinin digest özelliğini yalnızca SWZ dosyası (bir Adobe platformu bileşeni) yüklenirken URLLoader.load() yöntemi çağrıldığında kullanmak üzere ayarlamalısınız.
| |
SecurityError — Flash Player'da (ve Adobe AIR'da bulunan uygulama dışı sanal alan içeriğinde), bu hata aşağıdaki durumlarda atılır:
| |
Error — Fare olayı veya tuş basışı olayı gibi bir kullanıcı eylemine yanıt olarak yöntem çağrılmazsa. Gereksinim yalnızca Flash Player'daki içeriğe ve Adobe AIR'da uygulama dışı sanal alan içeriğine uygulanır.
|
İlgili API Öğeleri
Örnek ( Bu örnek nasıl kullanılır? )
package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class NavigateToURLExample extends Sprite { public function NavigateToURLExample() { var url:String = "http://www.adobe.com"; var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; try { navigateToURL(request); } catch (e:Error) { // handle error here } } } }
// Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); }
var request:URLRequest = new URLRequest( "tel:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "sms:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" ); navigateToURL( request );
registerClassAlias | () | işlev |
public function registerClassAlias(aliasName:String, classObject:Class):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bir nesne Action Message Format (AMF) olarak kodlandığında nesnenin sınıfını (tür) korur. Bir nesneyi AMF'ye kodlarsanız bu işlev, nesnenin kodunu çözerken sınıfı kurtarabilmeniz için kendi sınıfına yönelik takma adı kaydeder. Bir kodlama bağlamı bir nesnenin sınıfına yönelik bir takma ad kaydetmemişse nesne bir anonim nesneye kaydedilir. Benzer bir şekilde, kod çözme bağlamı kayıtlı bir aynı takma ada sahip değilse, kodu çözülen veriler için anonim bir nesne oluşturulur.
LocalConnection, ByteArray, SharedObject, NetConnection ve NetStream öğelerinin her biri nesneleri AMF'ye kodlayan sınıflara birer örnektir.
Kodlama ve kod çözme bağlamlarının bir takma ad için aynı sınıfı kullanmasına gerek yoktur; destination sınıfının, source sınıfı tarafından serileştirilen tüm öğelere sahip olması durumunda isteyerek sınıfları değiştirebilirler.
Parametreler
aliasName:String — Kullanılacak takma ad.
| |
classObject:Class — İlgili takma adla ilişkili sınıf.
|
Atar
TypeError — Her iki parametre de null olursa.
|
İlgili API Öğeleri
Örnek ( Bu örnek nasıl kullanılır? )
com.example.eg
) kaydetmek için registerClassAlias()
işlevini kullanır. Sınıf için bir takma at kaydedildiğinden, nesne ExampleClass öğesinin bir örneği olarak seriden çıkarılabilir ve kod true
değerini verir. registerClassAlias()
çağrısı kaldırıldıysa, kod false
değerini verir.
package { import flash.display.Sprite; import flash.net.registerClassAlias; import flash.utils.ByteArray; public class RegisterClassAliasExample extends Sprite { public function RegisterClassAliasExample() { registerClassAlias("com.example.eg", ExampleClass); var eg1:ExampleClass = new ExampleClass(); var ba:ByteArray = new ByteArray(); ba.writeObject(eg1); ba.position = 0; var eg2:* = ba.readObject(); trace(eg2 is ExampleClass); // true } } } class ExampleClass {}
sendToURL | () | işlev |
public function sendToURL(request:URLRequest):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bir sunucuya bir URL isteği gönderir, ancak yanıtları yok sayar.
Sunucunun yanıtını incelemek için, URLLoader.load()
yöntemini kullanın.
Ortak olarak ayrılmış bağlantı noktalarına bağlanamazsınız. Engellenen bağlantı noktalarının tam listesi için, bkz. "Ağ İletişimi API'lerini Kısıtlama", ActionScript 3.0 Geliştirici Kılavuzu.
SWF içeriğini barındıran HTML sayfasındaki object
veembed
etiketlerinin allowNetworking
parametresini ayarlayarak bir SWF dosyasının bu yöntemi kullanmasını önleyebilirsiniz.
Flash Player 10 ve sonrasında, yükleme (POST gövdesi içinde "content-disposition" başlığında "filename" parametresiyle belirtilir) içeren çok bölümlü bir Content-Type (örneğin, "multipart/form-data") kullanırsanız, POST işlemi, yüklemelere uygulanan güvenlik kurallarına tabidir:
- Fare tıklatma veya tuş basışı gibi kullanıcı tarafından başlatılan bir eyleme yanıt olarak POST işleminin gerçekleştirilmesi gerekir.
- POST işlemi etki alanları arasıysa (POST hedefi, POST isteğini gönderen SWF dosyasıyla aynı sunucuda değilse), hedef sunucunun etki alanları arası erişime izin veren bir URL ilke dosyası sağlaması gerekir.
Ayrıca çok bölümlü herhangi bir Content-Type için sözdiziminin geçerli olması gerekir (RFC2046 standartlarına göre). Sözdizimi geçersiz görünüyorsa, POST işlemi, yüklemelere uygulanan güvenlik kurallarına tabi olur.
Güvenlikle ilgili daha fazla bilgi için, bkz. Flash Player Geliştirici Merkezi Konusu: Güvenlik.
Parametreler
request:URLRequest — Veri gönderilecek URL'yi belirten URLRequest nesnesi.
|
Atar
SecurityError — Güvenilmeyen yerel SWF dosyaları İnternet ile iletişim kuramıyor. Bu SWF dosyasını ağa sahip yerel veya güvenilir olarak yeniden sınıflandırarak bu durumu önleyebilirsiniz.
| |
SecurityError — Ortak olarak ayrılmış bağlantı noktalarına bağlanamazsınız. Engellenen bağlantı noktalarının tam listesi için, bkz. "Ağ İletişimi API'lerini Kısıtlama", ActionScript 3.0 Geliştirici Kılavuzu.
|
Örnek ( Bu örnek nasıl kullanılır? )
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.sendToURL; public class SendToURLExample extends Sprite { public function SendToURLExample() { var url:String = "http://www.yourDomain.com/application.jsp"; var variables:URLVariables = new URLVariables(); variables.sessionId = new Date().getTime(); variables.userLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; trace("sendToURL: " + request.url + "?" + request.data); try { sendToURL(request); } catch (e:Error) { // handle error here } } } }
Tue Jun 12 2018, 01:25 PM Z