Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';无法让它工作:crossdomain.xml和Flash_Flash_Cross Domain - Fatal编程技术网

can';无法让它工作:crossdomain.xml和Flash

can';无法让它工作:crossdomain.xml和Flash,flash,cross-domain,Flash,Cross Domain,我有一个(自行创建的)swf演示,按钮触发getUrl('SampleTargetPage.html') 现在我想把swf放在cdn的 cdn.example.com 而我的html页面位于www.example.com上 更结构化: www.example.com/test.html cdn.example.com/someflash.swf cdn.example.com/crossdomain.xml 我认为在cdn.example.com上提供一个crossdomain.xml就足够了

我有一个(自行创建的)swf演示,按钮触发getUrl('SampleTargetPage.html')

现在我想把swf放在cdn的 cdn.example.com 而我的html页面位于www.example.com上

更结构化:

www.example.com/test.html
cdn.example.com/someflash.swf
cdn.example.com/crossdomain.xml
我认为在cdn.example.com上提供一个crossdomain.xml就足够了,这样链接就可以工作了。但是:看起来Flash插件根本就不会查询crossdomain.xml

现在,我是否必须在SWF中添加一些东西来实现这一点?非常感谢

编辑:是否需要使用Security.loadPolicyFile?
编辑:也许我根本不需要crossdomain.xml,因为所有内容都在*.example.com?下。

crossdomain.xml文件应该位于站点的根目录下,并列出可以访问其中文件的所有域。如果需要,还可以将文件设置为允许所有

请注意,在下面的示例中,我使用了通配符(*)而不是子域,这样我就可以访问主域中的所有子域。如果您想对此加以限制,前两个条目只是特定外部站点的示例。但你总是可以做一个…*来允许一切

内容如下所示:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="www.siteone.com" />
  <allow-access-from domain="sitetwo.com" />
  <allow-access-from domain="*.mysite.com" />
</cross-domain-policy>

找到了问题! 解决方案是在flash参数中将allowscriptaccess设置为“始终”:

 allowscriptaccess : 'always'
这是关于这个问题的背景信息:

从FlashPlayer9开始,影响“\u self”、“\u parent”或“\u top”的getURL(或navigateToURL)调用被视为与托管HTML页面的交互。从Flash Player 9 update 3开始,对目标的所有呼叫(除“_blank”外)都会受到影响。这是为了防止嵌入在HTML页面中的不受信任的SWF文件重新导航浏览器页面(或该页面中的框架),而不会警告用户他们正在访问其他第三方网站。它还对所有html框架实施跨域脚本限制

为了保护HTML页面不受不受信任的SWF文件的影响,Flash Player在显示Flash内容的和标记中支持HTML参数AllowScriptAccess。AllowScriptAccess可以有三个值:

  • “始终”:允许SWF文件在所有情况下与HTML页面交互
  • “sameDomain”:仅当其域完全匹配时,才允许SWF文件与HTML页面交互。默认情况下,Adobe Flash创作应用程序中的HTML发布模板输出指定AllowScriptAccess=“sameDomain”的HTML,因为这通常是所需的安全行为
  • “从不”:完全阻止SWF文件与HTML页面交互
调用getURL(或navigateToURL)现在由AllowScriptAccess参数控制。换句话说,AllowScriptAccess必须是“始终”或“sameDomain”,并且HTML页面和SWF文件的域必须完全匹配。否则,对getURL(或navigateToURL)的调用将失败


这是Flash Player 9中引入的一种新行为,以符合安全模型,并影响所有SWF版本。Adobe意识到这可能会改变在Flash Player 9发布之前部署的某些SWF媒体的行为,对于由此造成的不便,我们深表歉意

如果flashplayer没有加载域策略,那么它与为什么链接不工作的策略无关。我是否正确地假设您正在尝试
getUrl('javascript:goToPage();')
,而不是
getUrl(javascript:goToPage())
,因为您在帖子中输入了错误的内容?更改了原来的问题:我没有使用javascript,这只是一个普通的getUrl('test.hml')调用,无法跨域工作。(我错误地认为我在使用JS,对此表示抱歉)谢谢,但这对我并没有什么帮助。我有这样一个文件,但它不是由闪存请求。。。