对于一些安全要求较高的网站,往往不希望自己的网页被另外非授权网站框架包含,因为这往往是危险的,因为不法分子总是想尽办法以“钓鱼”的方式牟利。

对于禁止网页被frame或者iframe框架,我总结了下面三种方法供大家参考。

1.使用meta元标签

1
2
3
4
5
6
<html>
<head>
    <meta http-equiv="Windows-Target" contect="_top">
</head>
<body></body>
</html>

这个方法的具体效果不是很清楚的,貌似之前试过一次,但是没有效果,可能浏览器太旧了吧。

2.使用JavaScript脚本

1
2
3
4
5
6
7
8
function location_top(){
    if(top.location!=self.location){
        top.location=self.location;
        return false;		
    }
    return true;
}
location_top(); // 调用

这个方法用得比较多,但是网上的高手也想到了破解的办法,那就是在父框架中加入脚本var location=document.location或者var location="",所以这个方法也就不推荐了,当然唬唬不懂的还是可以的。

3.使用HTTP响应头

这里介绍的响应头是X-Frame-Options,这个属性可以解决使用js判断会被var location;破解的问题,IE8、Firefox3.6、Chrome4以上的版本均能很好的支持,关于这个响应头属性详细的介绍可以看《The X-Frame-Options response header》 新窗口打开: developer.moz...ponse_header,这篇文章给出了这个属性两个可能的值:

DENY The page cannot be displayed in a frame, regardless of the site attempting to do so.
SAMEORIGIN The page can only be displayed in a frame on the same origin as the page itself.

其中我们用到DENY,这样就禁止该页在上述支持的浏览器被框架引用了。当然设置header响应头的办法有很多,比如PHP的header函数和.htaccess的Header set等。