2017-12-18 250 views
0

我想允许用户输入他们的URL并浏览iframe。 他们点击确认按钮后,我会从iframe中浏览网址。GWT阻止了源自“http:// localhost”的框架访问跨源框架

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”不能访问跨源帧。

回答

2

总之:你不应该这样做,你不能这样做。


第一:

有些作者根本不想让自己的网页在一个框架中显示。 Facebook的尝试,例如,你会得到:

拒绝在该框架中显示“https://www.facebook.com/”,因为它设置“X-框架 - 选项”到“拒绝”。

也可以检查(用脚本)页面是否在框架中并且“突破”并取主窗口,http://www.interia.pl/就是一个例子。

因此,有些页面无法在框架中显示。


二:

阅读Same Origin Policy (SOP)

简单地说,SOP指出,在网页上运行的JavaScript代码可以不与任何资源不是来自同一个起源互动网站。此安全策略存在的原因是为了防止恶意网页编码人员创建窃取网页用户信息或危害其隐私的网页。虽然非常有必要,但这项政策也有使Web开发者的生活变得困难的副作用。