Ç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.