我正在尝试构建一个phonegap应用程序,它充当客户网站的迷你浏览器。客户客户会打开这个应用程序,它会有一个收藏夹列表。他们可以点击其中一个收藏夹,然后在minibrowser.html页面中打开该收藏夹。 minibrowser.html在顶部有一个收藏夹按钮,然后它有一个 iframe ,它应该充当浏览器。我通过更改iframes src来打开收藏夹。我可以使用此代码
捕获标题/网址$iframe.on('load', () => {
try {
console.log($iframe[0].contentDocument.title);
currentUrl = $iframe[0].contentDocument.URL;
console.log(currentUrl);
} catch (e) {}
});
但是当iframe中的网页尝试使用此行访问 window.top 时会出现此问题
window.top.scrollTo(0,1);
抛出错误:
Uncaught SecurityError:阻止了一个包含起源的框架" https://webapp.company.com"从访问带有起源的框架" file://"。请求访问的帧具有" https"的协议,被访问的帧具有"文件"的协议。协议必须匹配。
无论如何欺骗window.top为iframe?无论如何在没有托管webapp.company.com上的phonegap代码的情况下这样做。我无法访问webapp.company.com
答案 0 :(得分:0)
由于HTTPS协议的性质,服务器必须指定它是否接受第三方帧分发(类似于您尝试做的事情)。这样做是因为它在安全性方面是一个重大缺陷。
想象一下,一个人可能会使用这个黑客的简单变体来显示Facebook页面的一部分,并捕获您的帐户详细信息。这项政策阻止了这一点
一个简单的解决方法是使用某种URL缩短器或代理转发器。
快速举例:this link并打开控制台;您将看到内容安全政策。
标题X-Frame-Options
否认这一点,因为人们可能会将此用于非法目的。