未捕获的安全错误:无法读取'contentDocument'属性

3

我网站上有Facebook点赞插件,我尝试使用以下代码获取Facebook iframe的内容:

iframe[0].contentDocument || iframe[0].contentWindow.document;

但是在控制台中我得到了这个错误:

未捕获的安全错误:无法从“HTMLIFrameElement”读取“contentDocument”属性:阻止了一个具有源“http://like2see.co.il”的框架访问具有源“https://www.facebook.com”的框架。请求访问的框架具有协议“http”,被访问的框架具有协议“https”。协议必须匹配。

我进行了搜索并得到了这个答案Console displays Uncaught SecurityError,所以我理解因为我的网站不是https,那里有一个解决方案,但我不理解它,也许有人知道另一个解决方案或者可以解释一下那里提到的解决方案?


3
错误是由于您的网站不是 https://www.facebook.com 引起的 - 您无法跨域读取内容。 - Pointy
1
这是因为同源策略的缘故。 - gen_Eric
1个回答

1
除非您禁用浏览器的安全功能,否则不允许跨域并窥视Facebook.com中iframe的内容。
在Google Chrome中,您可以使用这些启动标志禁用安全功能,但不建议这样做
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-running-insecure-content --disable-web-security

此外,您的用户不会禁用其安全性。

您需要找到另一种方法来实现您所要尝试的操作。

阅读关于同源策略的其他答案可能会有所帮助。


有没有其他方法可以通过JavaScript读取iframe内容? - Kaki Baleven
抱歉,只有在与包含 iframe 的父页面相同的域上时才可以。 - Scott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接