免责声明:我将尽力解释我所追求的内容,但我对跨域策略的了解非常有限。我已经搜索了Stack,但如果有一个答案我错过了,请告诉我。
我们在网站上实施了标准的Facebook喜欢/发送按钮。Like
和Send
按钮位于指向 facebook.com 的 iFrame 中。
当您单击Send
按钮时,HTML将作为Facebook iFrame的同级(即我们的DOM)附加
我想知道的是FB如何在不违反跨域政策的情况下将HTML添加到我们网站上的div中。
这是我的小提琴。若要查看发生的情况,请在单击"Send
"的同时检查 DOM。
感谢@CBroe指出我的答案:
通过 Mozilla
window.postMessage
是一种安全启用跨源通信的方法。通常,仅当且仅当执行它们的页面位于具有相同协议(通常均为http),端口号(80是http的默认值)和主机(两个页面将modulo document.domain设置为相同值)的位置时,才允许不同页面上的脚本相互访问。window.postMessage 提供了一种受控机制,以正确使用时安全的方式规避此限制。
因为你用javascript添加发送按钮,而不是iframe。Iframe 在您的页面加载/刚加载后生成。
由于这个原因,脚本能够访问你和 Iframe 的内容和 DOM 元素并对其进行编辑。正如您所知道和提到的,无论如何,iframe 都无法访问它的父级。