簡體   English   中英

Flash SecurityDomain,P2P設置和乘以swfs

[英]Flash SecurityDomain, P2P settings and multiply swfs

我有兩個瑞士法郎:

  1. 應用程序瑞士法郎
  2. p2p客戶端swf,允許使用rtmfp復制技術(通過cirrus服務)加載數據

主要思想是在特定域上具有一個p2p加載程序,該加載程序將能夠在p2p網絡中工作,而無需多次詢問每個域的權限,例如:

p2p客戶端通過請求加載二進制數據,我相信內容確實無關緊要。

因此,我使用以下類( app.swf )加載p2pclient 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設置框

我有完全相同的代碼,但是p2pcli.swf替換為將數據存儲在本地共享對象中的swf,所有domain1-2-N.com都可以訪問它。

有任何想法嗎?

我知道,我的英語很爛:(

我確實不太確定,但是我會把答案扔出去,以防不時有用。

基於此類安全消息的一般用途,我不完全確定您可以阻止該對話框顯示。 在某些情況下,我確定對等網絡可能會對某些人造成安全風險(無論如何,它正在使用他們的帶寬。)用於打開和關閉該通知的設置是在用戶端的Flash設置對話框中( Windows 7中的控制面板...),因此暗示它本質上是硬連線到Flash平台中的。

當然,由於我是Adobe AIR的專家,所以我可能完全錯了……為了您的項目,我真誠地希望自己!

而且,根據記錄,您的英語幾乎是完美的。 為了清楚起見,我對一個段落進行了調整,但除此之外,請注意。 :d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM