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. <script language="javascript">
  11. if(self!=top){top.location.href=self.location.href;}
  12. </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.”的原因!

时间: 2024-12-06 10:02:11

js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)的相关文章

js获取iframe中的元素以及在iframe中获取父级的元素(包括iframe中不存在name和id的情况)

第一种情况:iframe中不存在name和id的方法:(通过contentWindow获取) var iframe = document.getElementsByTagName('iframe')[0];var ifr_document = iframe.contentWindow.document;//iframe中的文档内容 或者: var _iframe = document.getElementByIdx_x('iframeId').contentWindow; var _div =_

防止网页被别站用 iframe嵌套

将下面的代码加到您的页面 <head></head> 位置即可: <script language="javascript"> <!-- if (top.location != location) { top.location.href = location.href; } //--> </script> //或 <script language="javascript"> if(self!=t

js如何判断是否在iframe中/JQuery调用iframe父页面元素与方法

//方式一 if (self.frameElement && self.frameElement.tagName == "IFRAME") { alert('在iframe中'); } //方式二 if (window.frames.length != parent.frames.length) { alert('在iframe中'); } //方式三 if (self != top) { alert('在iframe中'); } 第一.在iframe中查找父页面元素的

处理iframe中嵌套本页面的问题

在框架中,常常会出现一种状况,当session失效之后再次操作时,会发现登录页面(或者你要操作的页面)突然见就显示在了iframe中,这是很不好的体验. 出现的效果大致像这样: 出现了这种状况,我们常常希望的是——当session失效之后再次操作时进入登录页面,而且该登录页面是在iframe的父级页面,也就是浏览器上地址栏里面能看见的路径的页面. 解决这种bug很简单,只需要在登录界面里面加上如下代码即可: 1 <script type="text/javascript">

jQuery如何获取iframe中的元素

jQuery如何获取iframe中的元素:这个问题其实非常简单,既然要获取iframe中的元素,那么首先要获取iframe.关于获取iframe这里就不介绍了可以参阅父窗口和iframe中对象互相传值简介一章节. 下面直接看一段代码就能够很轻松明白: $(window.frames["main"].document).find("ul") 以上代码id属性值为main的iframe元素中的ul元素. 原文地址是:http://www.softwhy.com/foru

js判断是否在iframe中

1.方式一 if (self.frameElement && self.frameElement.tagName == "IFRAME") { alert('在iframe中');} 2.方式二if (window.frames.length != parent.frames.length) { alert('在iframe中');} 3.方式三if (self != top) {  alert('在iframe中');} 以上有一种方法用任何一种都可以判断代码是否在i

html判断当前页面是否在iframe中

在做HTML页面的时候,经常会遇到"如果当前页面显示在iframe中,我们就相应的处理" 判断方法为: //判断是否在iframe中 if(self!=top){ parent.window.location.replace(window.location.href); } 版权声明:本文为博主原创文章,未经博主允许不得转载.

js父页面使用iframe中的函数

js父页面使用iframe中的函数:iframe是非常常用的一个html元素,如果在父页面中使用子页面的方法应该怎么写呢,下面就做一下简单的介绍.一.父页面代码: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> &l

html判断当前页面是否在iframe中/顶级document中

在使用div+iframe布局的应用中,通常我们希望在session超时或者未登录访问时跳转到登录页面,默认情况下iframe中的页面无法直接覆盖父页面,因此需要在登录页面加载的时候判断一下当前是否为top页面,如果不是,则刷新主页面,这样就可以避免登录页面嵌入在iframe中的情况,如下: <script type="text/javascript"> if(self!=top){ parent.window.location.replace(window.locatio