zoukankan      html  css  js  c++  java
  • js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)

    1. js如何判断是否在iframe中

    Js代码  收藏代码
    1. //方式一  
    2. if (self.frameElement && self.frameElement.tagName == "IFRAME") {  
    3.          alert('在iframe中');  
    4. }  
    5. //方式二  
    6. if (window.frames.length != parent.frames.length) {  
    7.          alert('在iframe中');  
    8. }  
    9. //方式三  
    10. if (self != top) {    
    11.      alert('在iframe中');  
    12. }  

    2. 防止网页被别站用 iframe嵌套

    将下面的代码加到您的页面 <head></head> 位置即可:

    Js代码  收藏代码
    1.  <script language="javascript">  
    2. <!--  
    3. if (top.location != location)  
    4. {  
    5. top.location.href = location.href;  
    6. }  
    7. //-->  
    8. </script>  
    9.   
    10. //或  
    11.   
    12. <script language="javascript">  
    13. if(self!=top){top.location.href=self.location.href;}   
    14. </script>  

    这个就能让别人无法用iframe嵌套你网站的任何页面,实现的效果是:输入盗链你网站的那个地址后会自动跳到你的网站。

    不可靠的原因:
    当别人用如下类似代码做IFRAME嵌套调用时,就可能躲过你的页面的javascript代码。

    Js代码  收藏代码
    1. <iframe src="你的页面地址" name="tv" marginwidth="0" marginheight="0" scrolling="No" noResize frameborder="0" id="tv"  framespacing="0" width="580" height="550" VSPACE=-145 HSPACE=-385></iframe>  
    2. <script language="javascript">   
    3. var location="";  
    4. var navigate="";  
    5. frames[0].location.href="";  
    6. </script>  


    2.最可靠的方法:
    为了彻底防止别人用IFRAME框架嵌套调用自己的网页,如下方法是最可靠的.
    这里赋值为空页面,也可赋值为你的页面的URL地址.

    Js代码  收藏代码
    1. <script language="javascript">  
    2. if(top != self){  
    3.     location.href = "about:blank";  
    4. }  
    5. </script>  

    还有一个完全屏蔽被iframe的方法就是添加:

    Html代码  收藏代码
    1. header("X-Frame-Options: deny");  
    2. header("X-XSS-Protection: 0");  

    这个也是加载iframe是产生错误“Load denied by X-Frame-Options: http://localhost/××××.php does not permit framing.”的原因!

  • 相关阅读:
    PAT 1006 Sign In and Sign Out
    PAT 1004. Counting Leaves
    JavaEE开发环境安装
    NoSql数据库探讨
    maven的配置
    VMWARE 下使用 32位 Ubuntu Linux ,不能给它分配超过3.5G 内存?
    XCODE 4.3 WITH NO GCC?
    在苹果虚拟机上跑 ROR —— Ruby on Rails On Vmware OSX 10.7.3
    推荐一首让人疯狂的好歌《Pumped Up Kicks》。好吧,顺便测下博客园可以写点无关技术的帖子吗?
    RUBY元编程学习之”编写你的第一种领域专属语言“
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/4568554.html
Copyright © 2011-2022 走看看