iframe页面是否可以判断何时进行iframe?

iframe页面是否可以判断何时进行iframe?,iframe,same-origin-policy,Iframe,Same Origin Policy,所以我知道,如果我将一个iFrame包含到一个不在同一个域中的页面中,我无法通过浏览器策略访问该iFrame的DOM,但是一个iFrame中的页面可以进行任何类型的父文档访问吗 具体地说,我必须提出一些取决于这个问题的想法: 如果嵌入的页面可以判断它不是父窗口,则可以使不可iframe的站点成为可iframe,这样,如果页面检测到它已被iframe,它将更改为“离开”页面,或者您可以使其仅可iframe(类似于仅用于包含的页面的服务器端脚本),因此,在未设置框架的情况下访问页面将得到一个“离开”

所以我知道,如果我将一个iFrame包含到一个不在同一个域中的页面中,我无法通过浏览器策略访问该iFrame的DOM,但是一个iFrame中的页面可以进行任何类型的父文档访问吗

具体地说,我必须提出一些取决于这个问题的想法:

  • 如果嵌入的页面可以判断它不是父窗口,则可以使不可iframe的站点成为可iframe,这样,如果页面检测到它已被iframe,它将更改为“离开”页面,或者您可以使其仅可iframe(类似于仅用于包含的页面的服务器端脚本),因此,在未设置框架的情况下访问页面将得到一个“离开”页面

  • 如果iframed页面具有父窗口没有的某些自由,它可以请求父窗口的样式表,并将其设置为其on样式表,从而使站点与父文档更加集成。(当然,我可以让我的样式表更多地与iframed站点相关,因为我知道它可以做到这一点,但我不认为这是一个问题)

  • 有人知道吗?

    关于#1,是的,你可以通过一些简单的javascript来判断你是否被框起来:

    <script type="text/javascript">
    if (self != top)
    {
      // Framed!
    }
    </script>
    
    
    如果(自我!=顶部)
    {
    //陷害!
    }
    
    关于#2,我不确定您可以使用“top”变量做什么,但我知道您可以更改它的位置(因此,如果您的站点被另一个站点设置框架,您可以让您的框架更改顶部框架的位置-本质上是将用户直接重定向到您的站点)


    不确定您还可以或不能对顶部框架做什么-其他人可能可以在那里提供更多信息。

    这可以通过在页面中嵌入以下JavaScript实现:

    if(top.location.href != self.location){
    //do redirection or display message
    }
    

    您可以将此Javascript作为网站模板的一部分,并防止任何页面显示在IFrame中,我以前已经这样做过,它已经起到了作用:

    <script type="text/javascript">
    if (window.parent != null)
    {
      // Framed!
    }
    </script>
    
    
    如果(window.parent!=null)
    {
    //陷害!
    }
    
    您可能还对检测帧感兴趣。你可以检测你是否被陷害,但是“家长”页面也可以采取一些对策来阻止你这样做。文章中的示例:

    检测您是否被陷害:

    if (parent.frames.length > 0) {
        top.location.replace(document.location);
    }
    
    防止帧检测和重定向:

       var prevent_bust = 0  
       window.onbeforeunload = function() { prevent_bust++ }  
       setInterval(function() {  
         if (prevent_bust > 0) {  
           prevent_bust -= 2  
           window.top.location = 'http://server-which-responds-with-204.com'  
         }  
       }, 1)  
    

    我建议放弃脚本元素中的HTML注释,再迎合Netscape 2也没有意义了。@David-好吧,好吧,老习惯难改:)老帖子,但我想添加一个观察。虽然可以防止您“破坏”iframe,但当检测到iframe时,您始终可以更改页面内容,以显示一些错误消息,如“此页面已被劫持。您不是在正版网站上访问此页面,请访问xyz.com/…阅读本文。”