为什么加载时YouTube AS3会出错?

时间:2015-01-19 21:12:21

标签: actionscript-3 flash youtube youtube-api

我一直在使用Flex加载YouTube AS3播放器:

private function vid_completeHandler():void{
        player:Object = new Object;
        ...
        player = vid.content;
    }

<controls:SWFLoader id="vid"
    complete="vid_completeHandler()"
    source="http://www.youtube.com/apiplayer?version=3"/>

在控制台(Flash Builder和Flashdevelop)中始终存在关于沙盒错误的不可阻挡的消息流,但代码无论如何都有效。

现在有些东西已经改变,玩家在加载时会抛出错误:

  

警告:域gdata.youtube.com未明确指定   元策略,但内容类型的策略文件   http://gdata.youtube.com/crossdomain.xml是   '文/ X-跨域策略'。应用元策略'by-content-type'。

     

[SWF] /yts/swfbin/player-vfl7UxYqE/apiplayer3.swf - 465,000字节   减压后   ***安全沙箱违规***
   SecurityDomain'http://localhost/myDomain/bin_debug/myapp.html?debug=true'尝试过   访问不兼容的上下文   'https://s.ytimg.com/yts/swfbin/player-vfl7UxYqE/apiplayer3.swf'

     

***安全沙箱违规***
  SecurityDomain“https://www.youtube.com/apiplayer?version=3”尝试访问不兼容的上下文“https://s.ytimg.com/yts/swfbin/player-vfl7UxYqE/apiplayer3.swf

     

SecurityError:错误#2121:安全沙箱违规:   Loader.content:https://www.youtube.com/apiplayer?version=3不能   访问https://s.ytimg.com/yts/swfbin/player-vfl7UxYqE/apiplayer3.swf。   这可以通过调用Security.allowDomain来解决。

     

在flash.display :: Loader / get content()
    在com.google.youtube.application :: SwfProxy / onRequestParameters()
      在flash.events::EventDispatcher/dispatchEventFunction()
      在flash.events :::EventDispatcher / dispatchEvent()
      在com.google.youtube.model :: YouTubeEnvironment()
      在com.google.youtube.application :: VideoApplication / createYouTubeEnvironment()
    在   com.google.youtube.application :: VideoApplication / onLoaderInfoInit()
  警告:域i.ytimg.com未明确指定元策略,   但是内容类型的策略文件http://i.ytimg.com/crossdomain.xml是   '文/ X-跨域策略'。应用元策略'by-content-type'。

我试图用AS3来解决这个问题,但无法修复它:

var current:ApplicationDomain = ApplicationDomain.currentDomain;
var context:LoaderContext = new LoaderContext();
context.applicationDomain = new ApplicationDomain(current);
var urlLoader:Loader  = new Loader();
var url:String = "http://www.youtube.com/apiplayer?version=3";
urlLoader.load(new URLRequest(url), context);

我已经完成了所有必要的 Security.allowDomain 调用,并尝试过以下其他选项:

Security.loadPolicyFile("http://www.youtube.com/crossdomain.xml");
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
context.securityDomain = SecurityDomain.currentDomain; 
context.allowCodeImport=true;

有什么办法可以防止他的错误吗? Google / YouTube可能导致此更改?

编辑: YouTube播放器根本没有加载。这是因为我在尝试修复安全错误时错误地移动了'player = vid.content'行。

0 个答案:

没有答案