这是我的情况 - 我有一个用 C++ 和 DirectX 编写的 3D 引擎。它使用 Awesomium 作为 GUI 窗口。
这允许我使用 HTML 和 Javascript 作为 GUI,然后在 3D 环境中渲染它。 Awesomium 封装了 Chromium 浏览器来渲染 HMTL。一切正常,包括 SWF 播放。
当我尝试使用 Javascript(Awesomium 允许我从 C++ 应用程序中调用 Javascript)和 ActionscriptsExternalInterface 与 SWF 电影进行通信时,我的问题就出现了。我遇到了可怕的安全错误。通过向 SWF 文件添加各种语句并将 SWF 文件的路径添加到 Flash Player 全局安全设置列表中,它就可以工作。
现在我不能完全期望我的最终用户都相应地修改他们的 Flash 播放器全局安全性,所以我希望有一个解决方法。
我有一个本地应用程序,调用加载本地 swf 文件的本地 html 文件。我的本地应用程序正在与此本地 SWF 文件进行通信,errr 在本地。没有网络交易。
那么为什么要沙箱呢?我不能告诉 swf 电影信任特定的发件人(我的应用程序)吗?顺便说一下,我使用的是 flash 8/AS2。
感谢您的帮助
西蒙
Here's my situation - I have a 3D Engine written in C++ and DirectX. It uses Awesomium for GUI windows.
This allows me to use HTML and Javascript for the GUI, then render it within a 3D environment. Awesomium wraps the Chromium browser to render the HMTL. All working fine including SWF playback.
My problem comes when I try to communicate with the SWF movie with Javascript (Awesomium allows me to call Javascript from within my C++ application) and Actionscripts ExternalInterface. I get the dreaded security error. By adding various statements to the SWF file and adding the path to the SWF file to the flash player Global Security Settings list, it works.
Now I can't exactly expect my end users to all modify their flash player Global Security accordingly so I am hoping there is a workaround.
I have a local application, calling a local html file which loads a local swf file. My local application is communicating with this local SWF file, errr locally. No network transaction.
So why the sandboxing? Can I not tell the swf movie to trust a particular sender, my application? I am on flash 8/AS2 by the way.
Thanks for your help
Simon
发布评论
评论(1)
我不确定这些设置是否适用于您的情况,或者您是否已经使用它们,但是您可以执行以下两件事来“放松”ActionScript 和 JavaScript 之间通信的安全性:
在 ActionScript 中: System.security.allowDomain("*")
在HTML 中 swf 的
I'm not sure these settings are applicable in your case, or if you already use them, but two things you can do to "relax" security for communication between ActionScript and JavaScript are:
In ActionScript: System.security.allowDomain("*")
In the
<object>
and/or<embed>
tag for the swf in the HTML, set the allowScriptAccess parameter to "always".