如何避免Uncaught SecurityError:使用phonegap

时间:2016-01-10 18:13:02

标签: javascript html cordova iframe

我正在尝试构建一个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

1 个答案:

答案 0 :(得分:0)

由于HTTPS协议的性质,服务器必须指定它是否接受第三方帧分发(类似于您尝试做的事情)。这样做是因为它在安全性方面是一个重大缺陷。

想象一下,一个人可能会使用这个黑客的简单变体来显示Facebook页面的一部分,并捕获您的帐户详细信息。这项政策阻止了这一点

一个简单的解决方法是使用某种URL缩短器或代理转发器。

快速举例:this link并打开控制台;您将看到内容安全政策。

标题X-Frame-Options否认这一点,因为人们可能会将此用于非法目的。