2012-03-12 37 views
2

我收到一个非常恼人的运行时错误消息,它在浏览器中运行时会使我的Flash应用程序崩溃。当我尝试访问Youtube的Gdata API时,该错误与“安全沙箱违例”有关。确切的错误信息如下:安全沙盒违反Youtube API

Error: Request for resource at https://gdata.youtube.com/feeds/api/videos? 
key=As##2PVR2#lPj#0bVaw_Tvjx1MI6qeAI1gORxErVYDzu2zZy4D18bf8T6pHxsPgIOhs3_44Te 
YTVlYLx49goUPbv00udousA&q=The-Muppets-official-trailer&alt=json&max-results=1 
by requestor from http://###.com/cws/f/VV.swf is denied due 
to lack of policy file permissions. 
*** Security Sandbox Violation *** 

当我在本地运行SWF时,一切正常。

任何想法?

谢谢。

编辑:我刚刚添加了这些行,但仍然没有运气。

Security.loadPolicyFile("http://www.mydomain.com/crossdomain.xml"); 
Security.loadPolicyFile("https://gdata.youtube.com/crossdomain.xml"); 
Security.allowDomain("https://gdata.youtube.com"); 
Security.allowDomain("gdata.youtube.com"); 

回答

0

您需要根据Adobe Flash安全规则指定crossdomain.xml策略文件。

1)将crossdomain.xml你的网站的根目录

2)Example content(不推荐)

<?xml version="1.0"?> 
    <cross-domain-policy> 
     <allow-access-from domain="*" /> 
    </cross-domain-policy> 

3)加载策略的文件到您的项目(AS3):

System.security.loadPolicyFile("http://www.DOMAIN.net/crossdomain.xml"); 

阅读reference document了解更多信息。

+0

感谢您的回复。不幸的是,它没有工作:( 我添加了crossdomain.xml文件到我的网站的根目录,加载该策略文件,以及youtubes策略文件在https://gdata.youtube.com/crossdomain.xml。但我我仍然得到相同的错误 – Nick 2012-03-12 01:06:44

+0

跨网域必须设置在您尝试访问的域名,而不是您的SWF托管域名。即使这是真正的问题,这个答案不会做到这一点,作为尼克将不允许更改YouTube的跨域策略 BTW:现有的跨域看起来完全没问题,可以从任何.com域访问:http://gdata.youtube.com/crossdomain.xml – Pumuckline 2012-03-12 09:36:55

+0

由于某些原因,flash didn不喜欢https://版本的gdata URL。将它们全部更改为http://后,一切正常。感谢您的帮助。 – Nick 2012-03-12 16:55:11