Veri yükleme

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Flash Player ve AIR içeriği, sunucularla veri alışverişi yapabilir. Yüklenen bilgiler medya olarak görüntülenmek yerine program nesneleri olarak görüntülendiğinden, veri yükleme, medya yüklemeden farklı bir işlem türüdür. Genellikle, içerik oluşturulduğu etki alanının aynısından veri yükleyebilir. Ancak, içerik genellikle başka etki alanlarından veri yüklemek için ilke dosyalarını gerektirir (bkz. Web sitesi denetimleri (ilke dosyaları) ).

Not: AIR uygulaması sanal alanında çalışan içerik hiçbir zaman uzak bir etki alanından sunulmaz (geliştirici, uygulama sanal alanına bilerek uzak içerik aktarmadığı sürece), dolayısıyla ilke dosyalarının korunduğu türde saldırılara katılamaz. Uygulama sanal alanındaki AIR içeriğinin ilke dosyalarıyla veri yüklemesi sınırlandırılmaz. Ancak, diğer sanal alanlardaki AIR içeriği burada anlatılan sınırlamalara tabidir.

URLLoader ve URLStream öğelerini kullanma

XML dosyası veya metin dosyası gibi verileri yükleyebilirsiniz. URLLoader ve URLStream sınıflarının load() yöntemleri, URL ilke dosyası izinleriyle yönetilir.

Yöntemi çağıran kodun etki alanından başka bir etki alanından içerik yüklemek için load() yöntemini kullanırsanız, çalışma zamanı, yüklenen varlıkların sunucusunda bir URL ilke dosyasını kontrol eder. Bir ilke dosyası varsa ve yükleyen içeriğin etki alanına erişim izni veriyorsa, verileri yükleyebilirsiniz.

Soketlere bağlanma

Çalışma zamanı varsayılan olarak bağlantı noktası 843’ten sunulan bir soket ilke dosyasını arar. URL ilke dosyaları gibi, bu dosya da ana ilke dosyası olarak adlandırılır.

İlke dosyaları ilk defa Flash Player 6 ile sunulduğunda, soket ilke dosyaları için destek yoktu. Soket sunucularına bağlantılar, soket sunucusuyla aynı ana bilgisayarın 80 bağlantı noktasında bir HTTP sunucusundaki varsayılan konumda bulunan ilke dosyası ile yetkilendirilirdi. Flash Player 9 halen bu yeteneği desteklerken Flash Player 10 desteklemez. Flash Player 10'da, yalnızca soket ilke dosyaları soket bağlantılarını yetkilendirebilir.

URL ilke dosyaları gibi, soket ilke dosyaları da hangi bağlantı noktalarının ilke dosyası olarak hizmet verebileceğini belirten meta-ilke ifadesini destekler. Ancak soket ilke dosyaları için varsayılan meta-ilke "yalnızca ana" yerine "tümü"dür. Başka bir deyişle, ana ilke dosyası daha kısıtlayıcı bir ayar belirtmediği sürece, Flash Player uygulaması ana bilgisayardaki herhangi bir soketin soket ilke dosyası sunabildiğini varsayar.

Bağlandığınız soket, SWF dosyasıyla aynı etki alanında olsa da, soket ve XML soket bağlantılarına erişim varsayılan olarak devre dışı bırakılmıştır. Şu konumlardan herhangi birinden soket ilke dosyası sunarak soket düzeyinde erişime izin verebilirsiniz:

  • Bağlantı noktası 843 (ana ilke dosyasının konumu)

  • Ana soket bağlantısıyla aynı bağlantı noktası

  • Ana soket bağlantısından farklı bir bağlantı noktası

Flash Player varsayılan olarak, bağlantı noktası 843'te ve ana soket bağlantısıyla aynı bağlantı noktasında bir soket ilke dosyasını arar. Farklı bir bağlantı noktasından soket ilke dosyası sunmak istiyorsanız, SWF dosyasının Security.loadPolicyFile() öğesini çağırması gerekir.

Soket ilke dosyası, URL ilke dosyasıyla aynı sözdizimine sahiptir, tek farkı, erişim izni verdiği bağlantı noktalarını da belirtmek zorunda olmasıdır. Soket ilke dosyası 1024'ten düşük bir bağlantı noktası numarasından sunulduğunda, herhangi bir bağlantı noktasına erişim izni verebilir; ilke dosyası bağlantı noktası 1024 veya daha yukarısından geldiğinde, yalnızca bağlantı noktası 1024 ve yukarısına erişim izni verebilir. İzin verilen bağlantı noktaları, <allow-access-from> etiketinde to-ports niteliğinde belirtilir. Tek bağlantı noktası numaraları, bağlantı noktası aralıkları ve joker karakterler kabul edilen değerlerdir.

Aşağıda, soket ilke dosyasına bir örnek verilmiştir:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<!-- Policy file for xmlsocket://socks.mysite.com --> 
<cross-domain-policy>  
    <allow-access-from domain="*" to-ports="507" />  
    <allow-access-from domain="*.example.com" to-ports="507,516" />  
    <allow-access-from domain="*.example.org" to-ports="516-523" />  
    <allow-access-from domain="adobe.com" to-ports="507,516-523" />  
    <allow-access-from domain="192.0.34.166" to-ports="*" />  
</cross-domain-policy> 

Bağlantı noktası 843'ten veya ana soket bağlantısıyla aynı bağlantı noktasından bir soket ilke dosyasını almak için, Socket.connect() veya XMLSocket.connect() yöntemini çağırın. Flash Player öncelikle bağlantı noktası 843'te bir ana ilke dosyasını kontrol eder. Bir ilke dosyası bulursa, dosyanın, hedef bağlantı noktasında soket ilke dosyalarını yasaklayan bir meta-ilke deyimi içerip içermediğini kontrol eder. Erişim yasaklanmamışsa, Flash Player ilk olarak ana ilke dosyasında uygun allow-access-from deyimini arar. Bu deyimi bulamazsa, daha sonra ana soket bağlantısıyla aynı bağlantı noktasında bir soket ilke dosyasını arar.

Farklı bir konumdan soket ilke dosyasını almak için, aşağıdaki gibi, ilk olarak özel "xmlsocket" sözdizimiyle Security.loadPolicyFile() yöntemini çağırın:

Security.loadPolicyFile("xmlsocket://server.com:2525"); 

Socket.connect() veya XMLSocket.connect() yöntemini çağırmadan önce Security.loadPolicyFile() yöntemini çağırın. Flash Player daha sonra ana bağlantınıza izin verip vermemeye karar vermeden önce ilke dosyası isteğinizi yerine getirinceye kadar bekler. Ancak ana ilke dosyası, hedef konumun ilke dosyaları sunamayacağını belirtirse, söz konusu konumda bir ilke dosyası olsa da loadPolicyFile() öğesine yapılan çağrı herhangi bir etki yaratmaz.

Bir soket sunucusu uyguluyorsanız ve bir soket ilke dosyası sağlamanız gerekiyorsa, ana bağlantıları kabul eden aynı bağlantı noktasını mı yoksa farklı bir bağlantı noktasını mı kullanarak ilke dosyasını sağlayacağınıza karar verin. Her iki durumda da, bir yanıt göndermeden önce sunucunuzun istemcinizden birinci iletimi beklemesi gerekir.

Flash Player bir ilke dosyası istediğinde, bağlantı kurulur kurulmaz her zaman şu dizeyi iletir:

<policy-file-request/>

Sunucu bu dizeyi aldıktan sonra ilke dosyasını iletebilir. Flash Player uygulamasından gelen istek her zaman bir null bayt tarafından sonlandırılır ve sunucudan gelen yanıtın da bir null bayt tarafından sonlandırılması gerekir.

Hem ilke dosyası isteği hem de ana bağlantı için aynı bağlantıyı yeniden kullanmayı beklemeyin; ilke dosyasını ilettikten sonra bağlantıyı kapatın. Aksi takdirde, Flash Player uygulaması, ana bağlantıyı kurmak üzere yeniden bağlanmadan önce ilke dosyası bağlantısını kapatır.

Verileri koruma

Verileri internette dolaşırken başkalarının görmesinden ve değişiklik yapılmasından korumak için, verilerin çıkış yeri olan sunucuda Aktarım Katmanı Güvenliği (TLS) veya Soket Katmanı Güvenliği'ni (SSL) kullanabilirsiniz. Ardından HTTPS protokolünü kullanarak sunucuya bağlanabilirsiniz.

AIR 2 veya üstü için oluşturulan uygulamalarda, TCP soket iletişimlerini de koruyabilirsiniz. SecureSocket sınıfı, TLS sürüm 1 veya SSL sürüm 4 kullanan bir soket sunucusuyla soket bağlantısı başlatmanıza izin verir.

Veri gönderme

Kod bir sunucuya ya da kaynağa veri gönderdiğinde veri gönderimi meydana gelir. Veri göndermeye bir ağ etki alanından içerik için her zaman izin verilir. Yerel SWF dosyası ise yalnızca yerel güvenilen veya ağ iletişimiyle yerel ya da AIR uygulaması sanal alanında bulunuyorsa ağ adreslerine veri gönderebilir. Daha fazla bilgi için, bkz. Yerel sanal alanlar .

Bir URL'ye veri göndermek için flash.net.sendToURL() işlevini kullanabilirsiniz. Başka yöntemler de URL'lere istekler gönderebilir. Bunlar arasında, Loader.load() ve Sound.load() gibi yükleme yöntemleri ve URLLoader.load() ve URLStream.load() veri yükleme yöntemleri yer alır.

Dosya yükleme ve indirme

FileReference.upload() yöntemi, bir kullanıcı tarafından seçilen dosyanın uzak sunucuya yüklenmesini başlatır. FileReference.upload() yöntemini çağırmadan önce FileReference.browse() veya FileReferenceList.browse() yöntemini çağırmanız gerekir.

FileReference.browse() veya FileReferenceList.browse() yöntemini başlatan kod yalnızca bir fare olayına veya klavye olayına yanıt olarak çağrılabilir. Bu başka durumlarda çağrılırsa, Flash Player 10 ve sonrası bir istisna atar. Ancak, AIR uygulaması sanal alanından bu yöntemleri çağırmak için kullanıcı tarafından başlatılan bir olay gerekmez.

FileReference.download() yönteminin çağrılması, kullanıcının uzak bir sunucudan dosya indirebildiği bir iletişim kutusunu açar.

Not: Sunucunuz kullanıcı kimlik doğrulaması gerektiriyorsa, yalnızca tarayıcıda çalıştırılan—başka bir deyişle, tarayıcı eklentisi veya ActiveX denetimi kullanan—SWF dosyaları, yalnızca indirmeler için kullanıcıdan bir kullanıcı adı ve şifre istemek üzere bir iletişim kutusu sağlar. Flash Player uygulaması, kullanıcı kimlik doğrulaması gerektiren bir sunucuya yükleme yapılmasına izin vermez.

Çağıran SWF dosyası dosya sistemiyle yerel sanal alandaysa, yüklemelere ve indirmelere izin verilmez.

Varsayılan olarak SWF dosyası, kendi sunucusu dışındaki bir sunucuya yükleme veya o sunucudan indirme işlemini başlatamaz. Sunucu, çağıran SWF dosyasının etki alanına izin veren bir ilke dosyası sağlıyorsa, SWF dosyası farklı bir sunucuya yükleme veya farklı bir sunucudan indirme işlemi yapabilir.