gpt4 book ai didi

javascript - 如何避免未捕获的安全错误: Blocked a frame with origin with phonegap

转载 作者:行者123 更新时间:2023-11-28 06:31:04 26 4
gpt4 key购买 nike

我正在尝试构建一个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: Blocked a frame with origin "https://webapp.company.com" from accessing a frame with origin "file://". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "file". Protocols must match.

是否有办法欺骗 iframe 的 window.top ?无论如何,是否可以在不将phonegap 代码托管在webapp.company.com 上的情况下执行此操作。我无法访问 webapp.company.com

最佳答案

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

想象一下,一个人可能会使用此黑客的一个简单变体来显示 Facebook 页面的一部分,并捕获您的帐户详细信息。这项政策可以防止这种情况发生。

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

举个简单的例子:http://codepen.io/nakshatra334/pen/OMgLLP并打开控制台;您将看到内容安全策略。

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

关于javascript - 如何避免未捕获的安全错误: Blocked a frame with origin with phonegap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34709035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com