gpt4 book ai didi

javascript - 在 iFrame 中维护重定向

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:49 26 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

为了防止帧破坏,来自 here :

<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>

关于javascript - 在 iFrame 中维护重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11620703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com