使用跨域更改src Iframe

时间:2012-08-09 07:21:42

标签: java javascript gwt

我正在尝试使用GWT在一个iframe内运行一个应用程序。直到这里一切正常,事情是我在我的实际网络中有一个表格将请求发送到iframe。使用java脚本,当我按下“发送表单”按钮时,我更改了我的iframe的src并稍后刷新它:

document.getElementById('iframeSpecialOffers').src = container.url;

document.getElementById('iframeSpecialOffers').contentWindow.location.reload();

网页正在www.example.com:81中运行,新的src在www.example.com:8082中为我的iframe运行,我收到此错误

      Unsafe JavaScript attempt to access frame with URL http://example:8082/Home.html#!TilePage;searchQuery=*;searchMode=1;amount=1;
position='47.3686498,8.539182500000038';leftBottomPosition='47.32023,8.448059899999976';
    rightTopPosition='47.43468,8.625370100000055';availabilityEndDate=datetime'2012-08-012T18:00:00';$culture=en
     from frame with URL http://example:81/. Domains, protocols and ports must match.

非常感谢!

1 个答案:

答案 0 :(得分:2)

为了保护人们免受XSS攻击(跨站脚本),浏览器不允许您访问非同一域内的iFrame或窗口内的任何内容。

但是,您可以设置某种标题,告诉浏览器允许跨域内容。

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

我不确定这是你应该去的路线,避免那种事情要好得多。

如果您的目标是严格刷新页面,您可以通过再次设置src来实现,我相信只需执行以下操作即可刷新页面:

document.getElementById('iframeSpecialOffers').src = document.getElementById('iframeSpecialOffers').src;

但是如果这不起作用,你可以附加一个无用的queryString参数来使它变得不同。