Flash SecurityDomain,P2P设置和乘法swfs

时间:2012-03-19 11:05:20

标签: actionscript-3 rtmfp adobe-cirrus

我有两个swfs:

  1. application swf
  2. p2p客户端swf允许使用rtmfp复制加载数据 技术(通过卷云服务)
  3. 主要思想是在某个域上有一个p2p加载器,它能够在p2p网络中工作而不需要多次为每个域提供权限,例如:

    p2p客户端按请求加载二进制数据,我相信内容无关紧要。

    所以,我使用以下类加载p2pclient swf( app.swf

    public class ClientLoader {
    
        // .. some code
    
        public function load(cb:Function, err:Function):void
        {
            _cb = cb;
            _err = err;
    
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoaded);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _onIoError);
            loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _onSecurityError);
            // note that context has neither application domain nor security domain
            loader.load(new URLRequest(_url), new LoaderContext());
        }
    
        private function _onLoaded(e:Event):void
        {
            trace("Loaded. Connecting to the p2p network...");
    
            _client = e.target.content;
            _client.addEventListener(Event.CONNECT, _onClientReady);
            _client.connect();
        }
    
        private function _onClientReady(e:Event):void
        {
            _cb(_client);
        }
    
    }
    }
    

    p2pclient本身( p2pcli.swf ):

    public class P2P extends Sprite
    {
        public function SqP2P() {
            Security.allowDomain("*");
        }
    
        public function connect():void
        {
            _connection = new NetConnection();
            _connection.addEventListener(NetStatusEvent.NET_STATUS, _netStatus);
            _connection.connect(CIRRUS_ADDRESS, CIRRUS_KEY);
    
            // after successful connect this method called
            _loadGroup();
        }
    
        private method _loadGroup():void
        {
            var spec:GroupSpecifier = new GroupSpecifier(_name);
            spec.serverChannelEnabled = true;
            spec.objectReplicationEnabled = true;
    
            _group = new NetGroup(connection, spec.groupspecWithAuthorizations());
            _group.addEventListener(NetStatusEvent.NET_STATUS, _netStatus);
        }
    
        private function _netStatus(event:NetStatusEvent):void
        {
            trace("NetStatusEvent:", event.info.code);
        }
    
    }
    

    但看起来Flash Player会忽略安全会话并尝试保存app.swf所属域的弹出设置,但不会保存p2pcli.swf域的弹出设置。为什么呢?!

    p2p settings box

    我有完全相同的代码,但是p2pcli.swf替换为swf,它将数据存储在本地共享对象中,并且所有domain1-2-N.com都可以访问它。

    有什么想法吗?

    我知道,我的英语很糟糕:(

1 个答案:

答案 0 :(得分:1)

我真的不太确定,但我会把答案扔出去,以防它有用。

根据此类安全消息的一般目的,我不完全确定您是否可以阻止该对话框显示。在某些情况下,我某些Peer Assisted Networking可能会对某些人造成安全风险(无论如何,它正在使用他们的带宽。)在Flash设置中打开和关闭该通知的设置是用户端的设置对话框(Windows 7中的控制面板......),因此暗示它本身硬连线到Flash平台。

当然,由于我更多的是Adobe AIR专家,我可能完全错了......为了您的项目,我真诚地希望我能够做到!

而且,为了记录,你的英语几乎是完美的。为了清楚起见,我调整了一个段落,否则,请点击。 :d