2013-04-04 125 views
2

我試圖通過我的Flash項目播放Youtube視頻。視頻播放,但我得到下面的錯誤,它毀了我的項目的其餘部分。我找不到有這個確切錯誤的地方。我一直在試圖理解它告訴我的是什麼,但我無法將我的頭圍繞在它周圍。 錯誤:安全沙盒違例閃存AS3

*** Security Sandbox Violation *** 
SecurityDomain 'http://s.ytimg.com/yts/swfbin/apiplayer3-vflmoXxFm.swf' 
tried to access incompatible context 'file:flashProject.swf' 

下面是我對球員的代碼:

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; 
} 

這是我最後一年的大學項目的一部分,因此,如果任何人有任何想法,編號很樂意給它一個嘗試。在此先感謝:)

+0

你有沒有看這些問題:http://stackoverflow.com/q/9660286/78782,http://stackoverflow.com/q/5594647/ 78782,http://stackoverflow.com/q/4850465/78782,http://stackoverflow.com/q/2771787/78782,http://stackoverflow.com/q/11441645/78782 – 2013-04-04 04:18:45

回答

2

出於安全原因,FlashPlayer將本地和遠程兩個沙箱(網絡)分開。您只能使用其中的一種,但無法同時加載內容。從本地文件系統加載的每個swf都在本地沙箱中考慮,其他所有內容都在網絡沙箱中考慮。

所以現在你的swf是從文件系統加載的,而不是從web服務器加載的,並且flash會在本地沙箱中加以考慮,那麼你的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服務器locf swf。

2)或者你可以把你的swf放在本地可信的swf列表中。只允許本地可信swf同時加載來自兩個沙箱的內容。有關如何將swf放入本地受信任列表的信息,請參閱下面的鏈接。

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

2

嘗試包括交domain.xml文件像您的項目如下圖所示。

<?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