是啥导致“您确定要离开此页面”在 iframe/网页中? [复制]

Posted

技术标签:

【中文标题】是啥导致“您确定要离开此页面”在 iframe/网页中? [复制]【英文标题】:What causes 'Are you sure you want to leave this page' in an iframe/webpage? [duplicate]是什么导致“您确定要离开此页面”在 iframe/网页中? [复制] 【发布时间】:2019-11-09 09:57:54 【问题描述】:

在我的网络应用程序中,我有一个网页,里面有一个 iframe 和一个特定的来源(不知道是哪一个,但我认为(?)对于这个问题并不重要),但尽快当我的 web 应用程序中包含 iframe 的网页被加载时,它会弹出一个弹出窗口,询问 我是否要离开该页面。我不想要这个,我想留在里面有 iframe 元素的页面上。

奇怪的是,例如,当我使用http://example.org 作为源(用于测试)时,它正常显示网页而没有任何弹出(我测试的其他包含 html、CSS 和最重要的页面也是如此JS)。

是什么导致了这个弹出窗口?当我在浏览器中手动打开作为iframe 的来源包含的网页时,不会出现弹出窗口。

【问题讨论】:

【参考方案1】:

您网页中的任何页面或网站都有 iframe 的若干规则。如果它不是同源,它将允许您对该网站进行 iframe,如果它位于不同的来源,它将不允许您对该网页进行 iframe。欲了解更多信息,请参阅此链接https://code.google.com/archive/p/browsersec/wikis/Part2.wiki#Origin_inheritance_rules

【讨论】:

这与“你真的要离开吗?”有什么关系?更改 iframe 内容时出现的提示?你似乎在回答一个完全不同的问题。 @Bijal Patel 所以有可能绕过这个吗?还是更改同源政策?【参考方案2】:

如果您尝试离开的页面添加了beforeunload 事件的侦听器,您会收到该消息。

“特定网页”可能包含重定向自身的代码。也许它会检查它是否在 iframe 中并执行此操作,因此它仅在您尝试在 iframe 中加载该页面时发生,而不是在您正常加载时发生。如果不知道网页是什么以及它是如何编写的,就很难更具体。

【讨论】:

那么您是指包含 iframe 的页面还是在iframe 本身内部调用的页面? 无论您要离开哪个页面。如果您要替换 iframe 的内容,则它是 iframe 中的页面。 替换 iframe 的内容?我唯一想要的是在 iframe 中显示一个外部网页。但是我请求的源导致这个弹出(我测试的其他页面没有)。所以根据你所说的是这个弹出是由 iframe 的源引起的,在这种情况下它可能有一个 beforeunload 事件的侦听器? 我以为您正在使用新 URL 重新分配 iframe.src。因此,如果旧 URL 具有该侦听器,它会在您替换它之前询问。 是的,这是beforeunload 事件。因此,请查看该网页的 JS,看看它在哪里执行此操作。

以上是关于是啥导致“您确定要离开此页面”在 iframe/网页中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Web 浏览器控制阻止您确定要离开此页面

在 iframe 中调用 Etherpad 的正确格式是啥

在 Twitter 引导流体布局中调整 iframe 大小的正确方法是啥?

重新加载/刷新 iframe 的最佳方式是啥?

借款显示综合评分不足是啥意思

iframe子页面js调用父页面中的控件报“拒绝访问”是啥原因,怎么解决?先声明不是跨域问题