加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex – Actionscript的ExternalInterface.addCallback仅在本地

发布时间:2020-12-15 02:12:58 所属栏目:百科 来源:网络整理
导读:在我的Flex应用程序中,我需要一个Javascript控件来调用我的一个Actionscript方法.很简单,根据Flex / Actionscript文档,我在我的Actionscript代码中写了这个: if (ExternalInterface.available) ExternalInterface.addCallback("setName",setNameInActiveWin
在我的Flex应用程序中,我需要一个Javascript控件来调用我的一个Actionscript方法.很简单,根据Flex / Actionscript文档,我在我的Actionscript代码中写了这个:
if (ExternalInterface.available)
    ExternalInterface.addCallback("setName",setNameInActiveWindow);

在Javascript控件中我写道:

document.getElementById('FlexAppId').setName(name);

效果很好.完全符合预期,所以我去了生产.但它在生产中不起作用:(.相同的代码……我无法弄清楚.上面的Javascript代码是运行的,但是回调没有在Actionscript代码中执行.

这与域安全性有关吗?在本地,我正在使用local.mydomain.com:8080,其中local.mydomain.com解析为127.0.0.1(我需要这样做,以便一些小部件正常工作). Flex应用程序来自同一个本地Web服务器.然而,在制作中,它只是www.mydomain.com(mydomain.com不是真正的域名),Flex应用程序来自flash.mydomain.com(CDN).

我在www.mydomain.com上有一个crossdomain.xml文件:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
        <site-control permitted-cross-domain-policies="master-only"/>
        <allow-access-from domain="*.mydomain.com"/>
</cross-domain-policy>

更新:我尝试更改本地环境,以便从flash.mydomain.com引用Flex应用程序,就像在生产中一样.事实证明我在本地也遇到了同样的问题……所以看起来这是某种域安全问题,尽管我上面有crossdomain.xml文件.我需要在crossdomain.xml中更改某些内容吗?有什么额外的东西我需要让ExternalInterface.addCallback工作吗?

更新2:得到它的工作!我必须同时执行Security.allowDomain(“*”)和Security.allowInsecureDomain(“*”).将其设置为flash.mydomain.com没有解决问题,我不得不放一个通配符. allowNetworking没有效果.我需要allowScriptAccess =“always”,但我之前有过.使用ExternalInterface.call调用Javascript只需使用该参数即可轻松完成.但是使用ExternalInterface.addCallback添加回调需要上面的安全方法带有通配符.

解决方法

跨域文件不处理SWF与DOM之间的通信.
Flash内容和导航器之间的这种交互是由包装SWF的html中的allowScriptAccess和allowNetworking标记的值来处理的.

由于您的SWF和HTML不是来自同一个限定域,因此您必须始终将allowScriptAccess值设置为.
但请注意,因为这意味着如果您在SWF中加载不受信任的内容,它也可以访问DOM页面并可能执行恶意操作.

有关详细信息,请查看:

http://tv.adobe.com/watch/how-to-develop-secure-flash-platform-apps/scripting-and-allowscriptaccess/
http://kb2.adobe.com/cps/407/kb407748.html
http://blogs.adobe.com/stateofsecurity/2007/07/how_to_restrict_swf_content_fr_1.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读