【问题标题】:Close iframe from child page with https使用 https 从子页面关闭 iframe
【发布时间】:2014-05-15 15:21:03
【问题描述】:

我一直在谷歌上搜索,但找不到任何相关信息。

我有一个显示在 php 父页面的 iframe 中的 .aspx 页面。

当在 .aspx 页面上单击按钮时,我关闭 iframe 以返回到 php 父页面,这是我使用的代码:

void btnDone_ServerClick(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(GetType(), "CLOSEWINDOW", "window.parent.postMessage('closeSurvey', '*');", true);
}

当我使用 http 测试页面时,这工作得很好,但是在我将父页面和 .aspx 页面都更改为 https 之后,此代码不起作用。

父页面的开发者说他使用相同的代码从.aspx页面接收消息,并且.aspx页面也没有做任何更改。

我是否在这里遗漏了一些东西以使其也可以与 https 一起使用?

【问题讨论】:

  • 1) 不可能关闭 iframe,您可能正在谈论一个弹出窗口。 2)如果两个域不同并且在 https 上,您将无法在来自 domain2 的页面中执行来自 domain1 的 javascript
  • 我从来没有真正使用过 iframe 但为什么不能关闭它?虽然它是一个模态 iframe.. 父站点 (php) 的域是 https://www.XXX.com,子站点 (aspx) 是 https://sub.XXX.com

标签: javascript asp.net iframe


【解决方案1】:

看看这个库,它提供了一个对 iFrame 的调用,以将其自身从父页面中删除并在 https 上运行。

https://github.com/davidjbradshaw/iframe-resizer

【讨论】:

    【解决方案2】:

    iFrame 是文档中的一个窗口,您不会像这样“关闭”它...阅读“modal”这个词,我猜您正在使用某种灯箱系统,它实际上会在fly 以在灯箱中显示外部源。

    因此,您实际尝试做的是关闭灯箱,您将无法这样做,因为 https 会阻止您从子页面访问父页面中的元素,而 http 允许您这样做。

    【讨论】:

    • 好的,我明白你的意思了。那么,有没有办法或解决方法来关闭模式弹出与 https?
    • 我不知道。一般来说,跨域的东西有时很棘手,https安全限制也是如此,当你将两者混合时,它当然会更加棘手:-/我知道这可能是 a** 的痛苦,但这是完全合理的安全性措施。虽然您出于非常正当的原因想使用它,但如果允许,其他人可以利用它。可能有一些方法可以解决这个问题,例如通过刷新整个页面(php 页面,而不是 iframe 中的页面),但是如果没有看到代码就很难说。不过,您唯一的解决方案是一种解决方法。
    • 嗯,确实如此.. 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多