1

我正在构建一个应用程序,我想将另一个服务器的页面加载到我的页面中。我从中提取数据的特定页面取决于该外部服务器上正在运行的查询(具有 OAuth 访问权限)。获得该页面的 URL 后,我会将其加载到 iFrame 中并将其显示在我的页面上。

问题是,查询给我的 URL 实际上是一个页面,该页面在到达我真正想去的地方之前转发了 3 次。为了让事情变得更复杂,它还在初始页面上提供了框架破坏代码。我将我的页面设置为重定向到在页面卸载时返回 204 状态的页面,以便击败帧破坏者,但现在它只是卡在显示初始空白页面而不是我想要的内容,这是在三个结尾重定向。

我最初的想法是尝试在页面卸载时捕获传出位置请求的代码。我曾希望能够看到用户被重定向到哪里并在 iFrame 中加载该请求。重复 3 次以获得 iFrame 中的正确页面。然而,直观地说,这感觉它不应该能够工作,当然它不会因为让页面看到他们的用户在离开网站时要去哪里将是一个主要的隐私问题。

接下来,我在想也许我可以在每个新页面加载到 iFrame 时依次解析每个新页面以找到重定向脚本。但是,我很确定它是在服务器端完成的,因为查看我得到的代码并没有发现任何问题。

我开始寻找在 iFrame 中维持这种重定向的方法。也就是说,允许重定向发生,但强制它留在 iFrame 内,同时还阻止帧破坏代码执行任何操作。这将是最简单的解决方案,但我找不到一个好方法。现在,我只是在 iFrame 中加载了一个空白页面,我认为服务器端有一些东西在执行 iFrame 中没有运行的重定向。frame buster 代码只防止整个文档发生变化,而不是 iFrame。有没有好的方法可以做到这一点,还是我做错了事情?

4

2 回答 2

1

为了防止帧破坏,从这里

<script type="text/javascript">
    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)  
</script>
于 2012-07-23T21:28:12.420 回答
0

通过 curl 在本地加载第一页,剥离破坏代码,使所有链接成为绝对链接并在 iframe 中显示。

它应该按照预期重定向并做你快乐的事情。祝你好运,让文档中的所有 url 都是绝对的。不要忘记您可能需要通过在脚本标记之后粘贴您自己的代码来覆盖的 javascript url 和函数。

于 2012-07-23T21:28:57.947 回答