gpt4 book ai didi

javascript - JavaScript与Flash如何跨域通信?

转载 作者:数据小太阳 更新时间:2023-10-29 04:03:24 25 4
gpt4 key购买 nike

如何打开“跨域安全”,以便页面上的 JavaScript 可以自由地与 SWF 通信,即使它托管在另一个域上?

我确信此函数通信在默认情况下被阻止,但通过使用名为“crossdomain.xml”的文件和 actionscript 3 函数:system.Security.allowDomain("*")。不过,我并没有取得圆满成功,而且我没有洞察力来了解哪一个正在为什么而开放。

在这种情况下是否需要考虑其他隐藏的安全层?

我是否通过这种设置以某种方式向潜在的黑客开放了我的代码?

(如果您想知道:是的,我必须在这样一种情况下进行这项工作,其中 html 托管在一个域中,JavaScript 是从另一个域外部添加的,并且SWF 由来自第三个域的 JavaScript 嵌入 - 不要问为什么,解释起来太复杂了 - 我也希望我可以将整个东西托管在一个域中)。

最佳答案

在 SWF 中使用 Security.allowDomain("www.example.com") 将允许来自 www.example.com 的页面中的 JS 通过 ExternalInterface 调用 SWF 中公开的函数.addCallback()。域和子域必须完全匹配。使用 "*" 将允许任何域与 SWF 通信,但如果您有一个特定域,最好使用它。

在 HTML 嵌入代码中将 allowScriptAccess 设置为 always 将允许 SWF 调用 JavaScript 函数。

让许多开发人员着迷的一件事是,在 SWF 完成加载之前,JavaScript 无法调用 SWF 上的函数。遗憾的是,没有基于 JS 的事件告诉您 SWF 何时准备就绪(至少我发现了这一点)。为了解决这个问题,我通常会在 SWF 完成加载时立即从 SWF 调用 JS 函数,以通知页面 SWF 已准备就绪。

这里和那里有一些抽象,但是如果您看一下 YUI Charts 的源代码,您或许可以了解 Yahoo!跨域 JS/SWF 通信正常工作。

关于javascript - JavaScript与Flash如何跨域通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com