今天在做网页发现谷歌地图不能使用了,然后从网上找了一段代码可以调用,设置iframe调用 http://www.xp37.com/map/google.html 这个页面的时候会自动跳转到这个页面上,检测了 一下是代码设置的问题,在JS文件里面调用了这么一段代码: - if (top.location != self.location) {top.location=self.location;}
复制代码 使用这段代码之后会检测是不是location是否是顶层的,即是否被嵌套到iframe里面了,如果是,则强制跳转至嵌套页面。知道了这个问题了解决方法就简单了,要不从当前页面修改,要么就从调用页面修改。 由于我的是在自己的网站内,所以直接从调用页面修改,注释掉这段代码就OK了。 如果不是自己的网页,那就需要做一下修改,要么让网页误以为他是在顶层,要么就是禁用JS代码。禁用JS代码,的前提是你的页面不牵扯到使用JS的一些功能,否则一起禁用了就麻烦了。以下是我找到的一些资料,由于我的问题已经解决,没做测试,需要的话可以自己测试一下。 / M. V5 u% r: Y, o
一时间搜索无果,网上的很多做法都不怎么行了。然后找到了这两篇文章: http://www.codinghorror.com/blog/2009/06/we-done-been-framed.html 以及:http://seclab.stanford.edu/websec/framebusting/framebust.pdf 特别是第二篇文章,介绍了很多基于iframe的攻防技术。 双重iframe的确可以阻止强制跳转。但是,第一层的iframe就覆盖了第二层的。所以要把第一层的做成透明的,然后第二层嵌套博客大巴这个网页。对我来说比较复杂。 后来我的做法如下: - <iframe src="http://luanqi-cat.blogbus.com/" class="t-iframe" scrolling="no" security="restricted" sandbox="">
复制代码即增加两个:security="restricted" sandbox="",前者是IE的禁止js的功能,后者是HTML5的功能。刚好就可以让IE,Chrome,Firefox这三大浏览器都实现了禁止iframe的自动跳转
( |- x E0 Q. w$ H1 D/ r; ]6 _9 w9 j7 ^, Z |