【发布时间】:2012-07-22 04:06:33
【问题描述】:
我正在构建一个应用程序,我想将一个页面从另一台服务器加载到我的页面中。我从中提取数据的特定页面取决于该外部服务器上正在运行的查询(具有 OAuth 访问权限)。获得该页面的 URL 后,我会将其加载到 iFrame 中并将其显示在我的页面上。
问题是,查询给我的 URL 实际上是一个页面,该页面在到达我真正想去的地方之前转发了 3 次。为了让事情变得更复杂,它还在初始页面上提供了框架破坏代码。我将我的页面设置为重定向到在页面卸载时返回 204 状态的页面,以便击败帧破坏者,但现在它只是卡在显示初始空白页面而不是我想要的内容,这是在三个结尾重定向。
我最初的想法是尝试在页面卸载时捕获传出位置请求的代码。我曾希望能够看到用户被重定向到哪里并在 iFrame 中加载该请求。重复 3 次以获得 iFrame 中的正确页面。然而,凭直觉,这感觉它不应该能够工作,当然不是因为让页面看到用户离开网站后要去哪里会是一个主要的隐私问题。
接下来,我在想也许我可以依次解析每个新页面,因为它被加载到 iFrame 中以找到重定向脚本。但是,我很确定它是在服务器端完成的,因为查看我得到的代码并没有发现任何问题。
我开始寻找在 iFrame 内维持重定向的方法。也就是说,允许重定向发生,但强制它留在 iFrame 内,同时还阻止帧破坏代码执行任何操作。这将是最简单的解决方案,但我找不到一个好方法。现在,我只是在 iFrame 中加载了一个空白页面,我认为服务器端有一些东西在执行 iFrame 中没有运行的重定向。 frame buster 代码只防止整个文档发生变化,而不是 iFrame。有没有好的方法可以做到这一点,还是我做错了事情?
【问题讨论】:
-
除非其中一个 iframe 文档包含 JavaScript 代码,否则重定向应在 iframe 内隔离。您确定不是您自己的应用程序导致了框架外的重定向吗?
标签: javascript http redirect iframe