我想允许用户输入他们的网址并在iframe中浏览。 点击确认按钮后,我将从iframe获取网址浏览。
IFrameElement frame = IFrameElement.as(DOM.createIFrame());
frame.setSrc("http://www.example.com"); //set the url of user enter
VerticalPanel ver = new VerticalPanel();
ver.getElement().appendChild(frame);
// After they click the confirm button, get the url from iframe
Window.alert(frame.getContentDocument().getURL());
但是我从iframe获取网址后出现错误
例外:com.google.gwt.event.shared.UmbrellaException:异常 捕获:( SecurityError):阻止具有原点的帧 “http://localhost”访问跨域框架。
答案 0 :(得分:3)
简而言之:你不应该这样做,你不能这样做。
<强>首先强>
有些网页的作者根本不想让他们的网页显示在一个框架中。以Facebook为例,你会得到:
拒绝在一个框架中显示“https://www.facebook.com/”,因为它将“X-Frame-Options”设置为“拒绝”。
还可以检查(使用脚本)页面是否在框架中并且“突破”并进入主窗口,http://www.interia.pl/就是一个例子。
因此,有些页面无法在框架中显示。
<强>第二强>
简单地说,SOP声明在网页上运行的JavaScript代码可能无法与不是源自同一网站的任何资源进行交互。此安全策略存在的原因是为了防止恶意Web编码人员创建窃取Web用户信息或破坏其隐私的页面。虽然非常必要,但这项政策也会产生让网络开发人员生活困难的副作用。