【问题标题】:Prevent Iframe from Reloading the Parent防止 iframe 重新加载父级
【发布时间】:2014-08-28 10:11:46
【问题描述】:

我有一个带有标准 iframe 标记的页面

框架内链接到一个 Https URL iframe 进行一些处理(付款信息等)

然后returns back a POST data处理失败时大部分时间不重新加载父页面(Return url, plus POST data to that URL, loads inside Iframe),处理支付返回成功时,大部分时间完全重新加载父页面(Returns url, plus POST data to the Successful URL, Reloads parent to that URL

由于这是来自安全支付的代码,因此我无法显示很多内容。

是否有任何 javascript 或 Html attr 可以在没有 randomness 的情况下实现这一点

【问题讨论】:

  • 您选择使用 iframe 是否有特定原因?为什么不改用 ajax?
  • @Jason:因为 iframe 可能比 ajax 更安全?
  • 这是一个托管支付页面@Jason,在我开发它之前就是这样。
  • @vico:行为或重新加载(或不重新加载)取决于服务器返回的 HTML 标记。您可以尝试对 iframe 进行沙箱处理或在框架页面上使用 CSP。
  • 顺便说一句,如果您的父页面也不是 HTTPS,那可能会导致用户不信任。

标签: javascript html iframe


【解决方案1】:

最终为 iframe 使用沙盒模式并强制停止至少现代浏览器的重定向。

sandbox="" 没有allow-top-navigation 将强制阻止重新加载

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

【讨论】:

    【解决方案2】:

    如果它只在成功尝试时重定向而不是每次都重定向,那么它很可能是从服务器重定向的(例如使用重定向标头或 window.refresh),那么您必须在那里修复您的代码(如果您有控制它)。

    如果您无法控制 iframe 的来源服务器端代码,请向 API 的所有者寻求帮助。如果他们拒绝(他们很可能会这样做)应用您需要的更改,这可能是出于安全考虑(如果用户的交易正在另一台服务器上处理,为什么页面托管在您页面的 iframe 中?阅读有关点击劫持

    无论哪种方式,我都会使用 fiddler 或您能想到的任何其他工具来检查成功响应的内容,以验证服务器端代码是否正在重定向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2020-10-06
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      相关资源
      最近更新 更多