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.”的原因!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM