0

我想从 MJPG 获取 URLStream,但我收到了错误 #2048:发布版本中的安全沙箱违规错误。

我正在尝试做的事情:

Security.allowDomain("*");
Security.allowInsecureDomain("*");

var stream:URLStream = new URLStream();
//receiving this error event in onStreamSecurityError handler:
//Error #2048: Security sandbox violation: {swf} cannot load data from {url}
stream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onStreamSecurityError);
//load method have no loader context option
stream.load(new URLRequest("http://anydomain.com/mjpg/video.mjpg"));

设置 crossdomain.xml 不是解决方案,因为应用程序应该能够从任何远程服务器加载流。

我记得使用 flash.display.Loader 类时,我设置了 LoaderContext 和应用程序域。之后,flex 应用程序可以从任何域加载资源。但我不知道如何处理 URLStream。

您有错误 #2048 的任何解决方案或解决方法吗?

4

1 回答 1

5

这是不可能的。您不能远程授予对另一个域的访问权限,因为它不是您的授予权限。该allowDomain()函数不这样做,它以相反的方式进行:

允许已识别域中的 SWF 文件访问包含 allowDomain() 调用的 SWF 文件中的对象和变量。

如果您的 SWF 在域 a.com 上,并且您要在其中添加行Security.allowDomain("b.com"),则将访问域 b.com 上的 SWF 的权限授予您的 SWF。它不会授予您访问域 b.com 的权限。

您可以在以下文档中找到更多详细信息allowDomain()

AJAX 也不会让你这样做,或者更好地说,浏览器不会让你这样做。他们都按照相同的规则玩。

为了克服这个问题,您必须通过与您的 SWF 位于同一域的服务器端脚本代理请求。它可以是带有 curl 的 PHP,或者任何你觉得更容易的东西。该视频解释了如何以及为什么。

于 2013-05-31T12:50:30.633 回答