防止网页嵌入框架中的代码

电脑杂谈  发布时间:2020-05-09 23:12:22  来源:网络整理

简单的网页框架代码_简单的网页框架代码_html简单框架代码

为了防止其他网站使用框架,请将您的网页嵌入其网页中. 您可以将以下简单的Javascript代码放在网页源代码的开头,否则其他人将无法使用您的网页:

<script>
  if(window!=top) //判断当前的window对象是否top对象
  {
    //如果不是,将top对象的网址自动导向被嵌入网页的网址
    top.location.href = window.location.href; 
  }
</script>

但是使用此代码后,没有人可以将您的网页嵌入框架,包括您自己.

简单的网页框架代码_html简单框架代码_简单的网页框架代码

是否有一种方法可以使我的页面只能嵌入到我自己的框架中,而不可以嵌入到其他人的框架中?

从表面上看,这个问题很简单. 只需判断一下: 当前框架和顶级框架的域名是否相同,如果答案是否定的,则执行URL重定向.

if(top.location.hostname !=   window.location.hostname){
  top.location.href = window.location.href;
}

html简单框架代码_简单的网页框架代码_简单的网页框架代码

但是出乎意料的是,这是错误的,根本无法使用.

假设top.location.hostname是,而window.location.hostname是. 换句话说,111.com在其网页中嵌入了222.com. 比较top.location.hostname时! = Window.location.hostname,结果如何?

浏览器将提示代码错误.

简单的网页框架代码_简单的网页框架代码_html简单框架代码

由于它们是跨域的,因此浏览器的安全策略不允许222.com页面在111.com页面上运行,反之亦然. IE将该错误称为“没有权限”. 此外,浏览器甚至不允许您查看top.location.hostname. 对于跨域简单的网页框架代码,当您看到此对象时,将直接报告错误.

那么,应该如何修改代码?

实际上,这提醒我们,我们仅需要检查top.location.hostname是否报告错误. 如果报告错误,表明存在跨域,则对顶部对象执行URL重定向;如果未报告任何错误,表明没有跨域(或未使用帧),则不采取任何操作.

简单的网页框架代码_简单的网页框架代码_html简单框架代码

try{
  top.location.hostname;
}catch(e){
  top.location.href = window.location.href;
}

这是正确的,并且可以在IE和Firefox中正常工作. 但是简单的网页框架代码,Chrome浏览器中将出现错误. 由于某些原因,在跨域的情况下,Chrome不会向top.location.hostname报告错误!

不可能,只需为Chrome添加一段代码即可.

try{
  top.location.hostname;
  if(top.location.hostname != window.location.hostname){
      top.location.href = window.location.href;
  }
}catch(e){
  top.location.href = window.location.href;
}

好的,除了本地域名,没有其他域名可以将您的网页嵌入框架.



本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-204613-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...