很多人做的网站、博客会被别人用嵌套成为别人的网站,而浏览器可能还会收录这些盗用者的页面,结果自己做的网站反而让别人增加了排名,这是无法接管的。
那么如何防止网页被别人的iframe嵌套,防止别人低成本地镜像自己的网站呢?最大略的方法,是利用js在做个前端处理:
<script type=\"大众text/javascript\"大众> window.onload=function(){ if(window.top != window.self)window.top.location = window.self.location; }</script>
事理便是判断 window.top 是不是 window.self,如果不是则解释被嵌套了,逼迫把自己的location更换到top去,实现反嵌套。核心语句是这个

if(window.top != window.self)window.top.location = window.self.location;
但由于方法大略,以是也很随意马虎被人破解。如果别人在引用iframe的时候,是通过document.write('<iframe></iframe>'),那么上面的js代码就无法生效,比如:
document.write('<iframe frameborder=\"大众0\"大众 scrolling=\"大众yes\"大众 name=\"大众main\"大众 src=\公众http://你的网址\公众 style=\"大众height:100%; visibility: inherit; width: 100%; z-index: 1;overflow: visible;\"大众></iframe>');
以是网上很多文章会建议利用Meta标签加 X-FRAME-OPTIONS 属性,通过浏览器来判断和谢绝被嵌套页面的显示:
<meta http-equiv =“X-Frame-Options”contents =“DENY”>
这个仍旧是在前端页面里做的,由于其不可靠, X-FRAME-OPTIONS 特性已经逐渐被浏览器弃用了,因此现在也不好使了,但它被保留在了做事器端,通过添加相应头的方法实现避免网页被嵌套,大多数浏览器能支持。
X-Frame-Options 有三个值:
DENY
表示该页面不许可在 frame 中展示,即便是在相同域名的页面中嵌套也不许可。
SAMEORIGIN
表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
表示该页面可以在指定来源的 frame 中展示。
方法1:在做事器端,可通过修正web做事的配置来实现,适宜所有的静态页面或者动态页面:
配置 Apache的方法:
例1:在所有页面上发送 X-Frame-Options 相应头
Header always append X-Frame-Options SAMEORIGIN
例2:配置 X-Frame-Options 设置成谢绝
Header set X-Frame-Options \"大众deny\"大众
例3:配置 X-Frame-Options 设置成 allow-from
Header set X-Frame-Options \"大众allow-from https://example.com/\"大众
配置 nginx的方法:
add_header X-Frame-Options SAMEORIGIN always;
方法2:在做事器端,也可以通过设置后端措辞的http相应头来实现:
php
header('X-Frame-Options:Deny');
asp
Response.AddHeader(\"大众X-Frame-Options\"大众, \"大众Deny\公众);
方法1或2任选其一即可,至此,终于完美办理!