Actionscript 3 Flex URLStream安全沙盒冲突

Actionscript 3 Flex URLStream安全沙盒冲突,actionscript-3,flash,apache-flex,flex4,Actionscript 3,Flash,Apache Flex,Flex4,我想从MJPG获取URLStream,但我在发布版本中收到了错误#2048:安全沙盒冲突错误 我想做的是: Security.allowDomain("*"); Security.allowInsecureDomain("*"); var stream:URLStream = new URLStream(); //receiving this error event in onStreamSecurityError handler: //Error #2048: Security sandbo

我想从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?

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

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

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

您可以在中找到关于此的更多详细信息


AJAX也不允许您这样做,或者更确切地说,浏览器也不允许您这样做。他们都遵守同样的规则


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

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

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

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

您可以在中找到关于此的更多详细信息


AJAX也不允许您这样做,或者更确切地说,浏览器也不允许您这样做。他们都遵守同样的规则


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

我认为这就是跨域文件的全部要点-您不能仅从任何服务器加载。谢谢,但为什么我可以使用Loader或$.ajax从任何服务器加载?是否可以禁用安全性?如果服务器管理员不想让每个人共享资源,他可以设置auth。您所要求的可以改为“如何使用Flash Player进行跨站点脚本攻击”:答案是Flash尽其所能防止这种攻击。如果您想在基于浏览器的Flash应用程序中从任何服务器加载数据,您必须创建一个您确实有权访问的代理。@Reboog711是否要重新播放视频?我需要一个单独的流媒体服务器,找到一个主机。我真正需要的是什么?在Internet Explorer中支持mjpg。它可以通过VLC插件实现,但它有一些问题我无法使用。我认为flash开发人员正在砍掉它的分支。创建特殊安全实用程序的Intead,该实用程序验证输入并默认启用。。。butthert@2xMax我得承认我不太明白你对我的反应。但是,是的,服务器端代理是访问客户端无法访问的内容的正确解决方案。或者,您可以让要访问的站点添加一个crossdomain.xml文件。我知道Silverlight也有类似的问题,并使用了一个类似于crossdomain.xml的文件来解决它。我认为大多数浏览器都有JavaScript实现来防止不必要的访问。我认为这就是跨域文件的全部要点-你不能只从任何服务器加载。谢谢,但是为什么我可以使用Loader或$.ajax从任何服务器加载?是否可以禁用安全性?如果服务器管理员不想让每个人共享资源,他可以设置auth。您所要求的可以改为“如何使用Flash Player进行跨站点脚本攻击”:答案是Flash尽其所能防止这种攻击。如果您想在基于浏览器的Flash应用程序中从任何服务器加载数据,您必须创建一个您确实有权访问的代理。@Reboog711是否要重新播放视频?我需要一个单独的流媒体服务器,找到一个主机。我真正需要的是什么?在Internet Explorer中支持mjpg。它可以通过VLC插件实现,但它有一些问题我无法使用。我认为flash开发人员正在砍掉它的分支。创建特殊安全实用程序的Intead,该实用程序验证输入并默认启用。。。butthert@2xMax我得承认我不太明白你对我的反应。但是,是的,服务器端代理是访问客户端无法访问的内容的正确解决方案。或者,您可以让要访问的站点添加一个crossdomain.xml文件。我知道Silverlight也有类似的问题,并使用了一个类似于crossdomain.xml的文件来解决它。我认为大多数浏览器都有JavaScript实现来防止不必要的访问。>AJAX也不允许您这样做,或者更确切地说,浏览器不允许您这样做。他们都遵守同样的规则。谁阻止我调用$.ajax(')?在大多数情况下,浏览器不允许这样做。没有人阻止你这么做,但浏览器只是拒绝你的请求。试试看。>AJAX也不会让你这么做,或者更确切地说,浏览器不会让你这么做。他们都遵守同样的规则。谁阻止我调用$.ajax(')?在大多数情况下,浏览器不允许这样做。没有人阻止你这么做,但浏览器只是拒绝你的请求。试试看。