首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全沙盒违规闪存AS3

安全沙盒违规闪存AS3
EN

Stack Overflow用户
提问于 2013-04-04 09:21:56
回答 2查看 7.5K关注 0票数 2

我正试着通过我的flash项目来播放Youtube视频。视频播放了,但我得到了下面的错误,它破坏了我的项目的其余部分。我找不到任何地方有这个确切的错误。我一直试图理解它在告诉我什么,但我就是不能理解它。错误:

代码语言:javascript
复制
*** Security Sandbox Violation ***
SecurityDomain 'http://s.ytimg.com/yts/swfbin/apiplayer3-vflmoXxFm.swf' 
tried to access incompatible context 'file:flashProject.swf'

下面是我为播放器准备的代码:

代码语言:javascript
复制
Security.allowDomain("www.youtube.com");

var my_player:Object;

var my_loader:Loader = new Loader();
my_loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
my_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);

function onLoaderInit(e:Event):void{
addChild(my_loader);
my_player = my_loader.content;
my_player.addEventListener("onReady", onPlayerReady);
} 

function onPlayerReady(e:Event):void{
my_player.setSize(600,300);
my_player.cueVideoById("76BboyrEl48",0);
my_player.x = stage.stageWidth/2 - my_player.width/2;
my_player.y = stage.stageHeight/2 - my_player.height/2;
} 

这是我大学最后一年项目的一部分,所以如果有人有任何想法,我非常乐意尝试一下。提前感谢:)

EN

回答 2

Stack Overflow用户

发布于 2013-04-04 14:59:58

出于安全原因,FlashPlayer将本地和远程(网络)两个沙箱分开。当你只被允许使用其中一个时,你不能同时从两个地方加载内容。从本地文件系统加载的每一个swf都放在本地沙箱中,其他的都放在网络沙箱中。

所以现在你的swf是从文件系统加载的,而不是从网络服务器和闪存考虑它在本地沙箱,然后你的swf加载内容从远程/网络沙箱,即从www.youtube.com,正如我前面提到的,swf运行在本地沙箱不能加载内容从远程沙箱和相同的swf在远程沙箱不能加载内容从本地沙箱。所以错误是很自然的。

allowDomain()只允许来自同一沙箱的不同域名,即您可以从www.youtube.com加载内容到从www.yourdomain.com加载的swf

要了解有关安全沙箱的更多信息,请参阅:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html

现在来解决你的问题:

1)您可以从localhost设置本地HTTP服务器locad swf。

2)或者你可以把你的swf放在本地可信的swf列表中。只允许本地受信任的swf同时从两个沙箱加载内容。请参阅下面的链接,了解如何将您的swf放入本地信任列表。

http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html

票数 2
EN

Stack Overflow用户

发布于 2013-04-04 15:16:05

尝试在项目中包含一个类似于下面所示的cross-domain.xml文件。

代码语言:javascript
复制
<?xml version="1.0"?>
<cross-domain-policy>
   <site-control permitted-cross-domain-policies="all"/>
   <allow-access-from domain="*"/>
   <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

否则,请尝试在此处的安全设置面板下添加您的内容。http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

有关安全沙箱的更多信息,请参阅:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15801009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档