我试图在Flash Builder中播放Youtube视频。每次播放文件时都会收到错误消息:
SecurityError: Error #2121: Security sandbox violation: Loader.content: https://www.youtube.com/v/FGtTEmBR7Sk cannot access https://s.ytimg.com/yts/swfbin/player-vflQiDuyQ/watch_as3.swf. This may be worked around by calling Security.allowDomain.
at flash.display::Loader/get content()
at com.google.youtube.application::SwfProxy/onRequestParameters()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at com.google.youtube.model::YouTubeEnvironment()
at com.google.youtube.application::WatchPageVideoApplication/createYouTubeEnvironment()
at com.google.youtube.application::VideoApplication/onLoaderInfoInit()
我尝试过使用推荐的工作(见下文),但我没有做任何事情会停止错误信息。我还从网上下载并试用了几个示例文件,但每次收到错误消息。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" creationComplete="init()">
<mx:Script>
<![CDATA[
[Bindable] private var videoUrl:String;
private function videoToPlay():void{
Security.allowDomain("http://www.youtube.com/v/FGtTEmBR7Sk");
Security.allowDomain("https://s.ytimg.com");
Security.allowDomain("https://s.ytimg.com/yts/swfbin/player-vflQiDuyQ/watch_as3.swf");
Security.allowDomain("*");
videoUrl = "http://www.youtube.com/v/FGtTEmBR7Sk";
}
]]>
</mx:Script>
<mx:Button label="Play" click="videoToPlay()" useHandCursor="true" buttonMode="true" />
<mx:Canvas>
<mx:SWFLoader id="swfLoader" source="{videoUrl}" width="640" height="387" />
</mx:Canvas>
</mx:Application>
任何人都可以告诉我我的代码有什么问题,或者指向一个显示如何在Flash Builder中嵌入youtube文件的工作示例?
答案 0 :(得分:2)
您已经(看到)了#2121
安全错误,因为您使用的是Flash Player debug version,但在使用&#34;正常&#34;版本你将得不到任何东西(正如你所说),你的播放器将加载youtube内容作为任何其他播放器没有问题。 Flash Player的调试版本供开发人员用于调试和测试目的,因此如果您的内容通常使用&#34; normal&#34;正常加载,请不要关心这些安全警报。所有非开发人员用户使用的版本。
youtube.com 尝试访问 s.ytimg.com 中的watch_as3.swf
文件时会触发安全错误,所以在这里无法避免该错误,因为Security.allowDomain
应该在我认识的谷歌维护的swf文件中使用;)
Security.allowDomain
函数的使用方式如下:
// we use only the domain name not all the file url Security.allowDomain('example.com'); // or http://example.com // or the ip address Security.allowDomain('10.10.10.10'); // or http://10.10.10.10 // or a wildcard "*" to allow all domains Security.allowDomain('*');
希望可以提供帮助。