AS3 沙箱

沙箱也稱之爲安全域,今日對安全域做一個整理:

一 , 信任授權

1, 不同域中的SWF(可執行文件)


儘管安全域只允許相同域下的通訊,但是我們可以使用授信(Security.allowDomain或Security.allowInsecureDomain)來解決2個不同域的通信問題。

注意 : 授信是單向的,舉個例子: A和B。A向B授信,自然B是可以訪問A的,但是此時的A是不能訪問B的,如果要使A能夠訪問B,應該讓B向A授信

現在用Security.allowDomain爲例,來講解授信。

① : Security.allowDomain("*"); //此種授信方式是很危險的,意味着任何其他域都能訪問其功能。

② : 假設你只想讓http://www.51cto.com/可以訪問本域的話 :  Security.allowDomain("http://www.51cto.com/"); //這種方式相對比較安全。如果你還想讓

http://www.baidu.com可以訪問此域,只要並列加一句 : Security.allowDomain("http://www.baidu.com"); 

如:

Security.allowDomain("http://www.51cto.com/"); 
Security.allowDomain("http://www.baidu.com");

2,調用另一個域中的不可執行文件(圖片 , 音樂 , 文本等等)

這類文件,不能使用Security.allowDomain或Security.allowInsecureDomain,這個時候需要用到另外一種方案:跨域文件。跨域文件文件名已經固定(crossdomain.xml),

這種文件,放在服務器(http或者socket服務器根目錄)之下,這樣服務器才能和SWF正常的通信。

現在給出一個跨域文件的例子:

<?xml version="1.0"?>
<cross-domain-policy>
    <sity-control permitted-cross-domian-policies="by-content-type"/>
    <allow-access-from domain="http://www.51cto.com/"/>
    <allow-access-from domain=">
</cross-domain-policy>

此處不可執行文件又有一個分類

①:本身就是數據類文件 如:文本文件 , 二進制文件 , XML文件等等

如果沒有跨域文件,這類的文件根本就不會被加載。

②:除了數據類文件還有聲音文件和圖片文件等

這類文件在沒有跨域文件的情況下 , 是會被正確加載的,還可以顯示出來 , 但是BitmapData.draw是不能使用的,原因是SWF沒有對這個文件形成引用,

要是用跨域文件才行。這個一定要注意。因爲,你加載的圖片顯示出來了,有不能使用API操作它們,這就尷尬了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章