Javascript 如果self===top或google.com 如果(自我===顶部){ var antiClickjack=document.getElementById(“antiClickjack”); antiClickjack.parentNode.removeChild(antiClickjack); }否则{ top.location=self.location; }

Javascript 如果self===top或google.com 如果(自我===顶部){ var antiClickjack=document.getElementById(“antiClickjack”); antiClickjack.parentNode.removeChild(antiClickjack); }否则{ top.location=self.location; },javascript,iframe,Javascript,Iframe,我有一个不允许iFrame的代码,但我想只允许来自google.com的iFrame,我怎么能做到这一点 我认为伪代码应该是 if(self===top)或google.com但不知道如何在javascript中执行此操作您可以使用top.location.host检查主机名,如下所示: <script type="text/javascript"> if (self === top) { var antiClickjack = document

我有一个不允许iFrame的代码,但我想只允许来自google.com的iFrame,我怎么能做到这一点

我认为伪代码应该是
if(self===top)或google.com
但不知道如何在javascript中执行此操作您可以使用
top.location.host
检查主机名,如下所示:

<script type="text/javascript">
         if (self === top) {
          var antiClickjack = document.getElementById("antiClickjack");
          antiClickjack.parentNode.removeChild(antiClickjack);
         } else {
          top.location = self.location;
         }
      </script>
但如果主机名不同,则无法更改顶部的位置:

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

未捕获的安全性错误:阻止了具有原点的帧 “”访问具有原点的帧 "". 协议、域和端口必须匹配


所以,我认为这不会满足你的需要。

检查
self.location.host
例如
if(self===top | | | self.location.host==='google.com'){}
不会
self.location
返回承载内容的URL,而不是从包含iframe的地方返回<代码>顶部。位置可能会起作用,但不确定包含的帧是否可以访问该位置。是的,你是对的-它应该是
顶部
,我的错误-让我仔细检查一下。
if (self != top) {
  document.write('cross domain');
}
if (self.location.hostname !== top.location.hostname) {
  top.location.href = self.location.href; //throws exception
}