AS3 沙箱

发布时间:2019-08-09 09:58:14编辑:auto阅读(1486)

    沙箱也称之为安全域,今日对安全域做一个整理:

    一 , 信任授权

    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操作它们,这就尴尬了。




关键字