如果自我===顶部或google.com

时间:2015-02-27 18:28:48

标签: javascript iframe

<script type="text/javascript">
         if (self === top) {
          var antiClickjack = document.getElementById("antiClickjack");
          antiClickjack.parentNode.removeChild(antiClickjack);
         } else {
          top.location = self.location;
         }
      </script>

我有这个代码,不允许使用iframe,但我想只允许来自google.com的iframe,我该怎么做?

我认为伪代码会是  if (self === top) or google.com但不知道如何在javascript中执行此操作

1 个答案:

答案 0 :(得分:0)

您可以使用top.location.host检查主机名,如下所示:

if (self === top || top.location.host === 'google.com') {
  //good to go
}

但如果主机名不同,则无法更改顶部的位置:

if (self != top) {
  document.write('cross domain');
}
if (self.location.hostname !== top.location.hostname) {
  top.location.href = self.location.href; //throws exception
}

抛出:

  

Uncaught SecurityError:阻止具有原点的帧   &#34; http://mbr.domain2.com&#34;从访问原始框架   &#34; http://mbr.domain.com&#34 ;.协议,域和端口必须匹配。

所以,我不认为这会做你想做的事。