此答案指定解释了如何访问 gmail.com 上所有 iframe 的内容https://stackoverflow.com/a/9439525/222236
但在 mail.google.com 上它会抛出此错误:
Unsafe JavaScript attempt to access frame with URL https://plus.google.com/u/0/_/... from frame with URL https://mail.google.com/mail/u/0/#inbox. Domains, protocols and ports must match.
我尝试添加*://plus.google.com/*
与扩展清单的匹配,但这没有帮助。
更新:在访问内容之前检查 url 是可行的,但我的逻辑目前非常粗糙,因为它只检查 google plus:
if(-1==iframes[i].src.indexOf('plus.google.com')) {
contentDocument = iframes[i].contentDocument;
if (contentDocument && !contentDocument.rweventsadded73212312) {
// add poller to the new iframe
checkForNewIframe(iframes[i].contentDocument);
}
}
由于以下原因,访问被阻止同源政策.
避免错误的正确方法是排除来自不同来源的帧。你的逻辑确实很粗糙。它不会专门查找主机名,也不考虑其他域。
反转逻辑以获得可靠的解决方案:
if (iframes[i].src.indexOf(location.protocol + '//' + location.host) == 0 ||
iframes[i].src.indexOf('about:blank') == 0 || iframes[i].src == '') {
对此的解释白名单:
-
protocol://host/
= https://mail.google.com
.
显然,必须允许当前主机
-
about:blank
和一个空字符串
这些框架由 GMail 动态创建和编写脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)