【问题标题】:Sandbox violation - in flash player - crossdomain issue?沙盒违规 - 在 Flash 播放器中 - 跨域问题?
【发布时间】:2009-08-28 06:05:55
【问题描述】:

我想知道是否有人解决了类似的问题。

我在站点 A 上有一个网页,其中嵌入了站点 B 提供的 swf。 当尝试通过 URLLoader 从站点 B 上的文件夹加载 txt 文件时,swf 会出现安全沙箱错误。

我在站点 B 上有一个跨域策略(当前设置为 )。 我在这里错过了什么吗?我可以将文本文件放在哪里,以便 swf 可以加载它? 我可以访问站点 A 和站点 B。

非常感谢任何帮助

【问题讨论】:

    标签: flash


    【解决方案1】:

    这取决于你如何编译你的 swf。存在安全 Sanbox 问题。 Essential Actionscript 3.0 中有一整章是关于安全性的,但我会尽量保持简短。

    使用 Flash IDE,您有两个“安全选项” 要么您的 swf 有权在本地加载剪辑(来自同一域), 来自网络(其他域)

    假设 swfA 是站点 A 上的 swf,而 swfB 是站点 B 上的 swf

    首先,尝试将 LoaderContext 设置为用于 swfB 的加载器

    例如

    //1st param(true) in LoaderContext constructor means always check for policy files 
    var swfBLoaderContext:LoaderContext = new LoaderContext(true);
    var swfBLoader:Loader = new Loader();
    swfBLoader.contentLoaderInfo.addEventListener(Event.INIT, swfBLoaded);
    swfBLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, swfBIOError);
    swfBLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, swfBSecurityError);
    
    swfBLoader.load(new URLRequest('http://siteb.com/b.swf',swfBLoaderContext);
    
    function swfBLoaded(event:Event):void{
        trace(event.target.content);
    }
    function swfBIOError(event:IOErrorEvent):void{
        trace(event);
    }
    function swfBSecurityError(event:SecurityErrorEvent):void{
        trace(event);
    }
    

    然后在文档设置中更改本地播放安全性以访问网络文件。

    alt text http://www.adobe.com/devnet/flash/articles/local_network_playback/fig01.jpg

    感谢 Adob​​e 提供图片。

    更多详情请咨询this article on devnet

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      相关资源
      最近更新 更多