1

免责声明:我将尽力解释我所追求的,但我对跨域策略的了解非常有限。我在 Stack 周围搜索过,但如果我错过了答案,请告诉我。

我们在我们的网站上实现了标准的Facebook Like/Send 按钮Like和按钮位于指向 facebook.com的SendiFrame 中。

当您单击该Send按钮时,HTML 将作为 Facebook iFrame 的同级附加(即添加到我们的 DOM)。

我想知道的是 FB 如何能够在不违反跨域政策的情况下将 HTML 添加到我们网站上的 div 中。

这是我的小提琴。要查看发生了什么,请在单击 时检查 DOM Send

4

2 回答 2

3

感谢@CBroe 指出我的答案:

通过Mozilla

window.postMessage是一种安全启用跨域通信的方法。通常,只有当且仅当执行它们的页面位于具有相同协议(通常都是 http)、端口号(http 的默认值为 80)和主机(模document.domain 被两个页面设置为相同的值)。window.postMessage 提供了一种受控机制,以在正确使用时以一种安全的方式规避此限制。

于 2012-06-20T19:06:27.707 回答
0

因为您使用 javascript 添加发送按钮,而不是使用 iframe。当您的页面正在加载/刚刚加载后,iframe 正在生成。

由于这个原因,脚本能够访问您和 Iframe 的内容和 DOM 元素并对其进行编辑。正如您所知道和提到的,iframe 无论如何都无法到达它的父级。

于 2012-06-20T18:17:31.820 回答