【问题标题】:IE10 iFrame loads page but doesn't displayIE10 iFrame 加载页面但不显示
【发布时间】:2014-09-04 13:09:09
【问题描述】:

我正在尝试设置 iFrame 以显示我们公司内另一个域的表单。并且在 Chrome 或 Firefox 中测试效果很好。

问题是,对于 IE 10,浏览器不显示表单,而是在 iFrame 中显示空白页面。

我已将其分解为桌面上的一个非常简单的 test.html。开发人员工具显示网络调用不仅有效 - 而且它注册加载文件,这些文件包含在我试图调用的页面中。我什至在表单的 javascript 触发中看到了调试语句,并且 ajax 调用正在运行。但 iFrame 仍然显示为空白。

我一直在寻找和搜索,但无法弄清楚如何完成这项工作。

调用页面有:

<!doctype html>

...

<DIV><iframe height="400" width="100%" src="http://my.domain.com/myForm?userName=clicky&email=cMcTesterton@domain.com"></iframe></DIV>

被调用页面的前两行:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!doctype html>

当然会变成简单的

<!doctype html>

我正在使用 URL 绑定,所以没有扩展可言。 我已经进入IE的Internet Options -> Security -> Custom level ... -> miscellaneous启用Launching Programs and files in an IFRAMENavigate windows and frames across different domains

我什至不知道还要寻找什么。尤其让我感到困惑的是,根据控制台,它必须正在阅读我试图调出的页面。它只是没有显示它。

【问题讨论】:

  • 调用页面(带有 iframe)是否位于http://my.domain.com 域中?
  • @bastos.sergio 不,不是。它位于我们公司的另一个域中。
  • @WolfmanJoe - 正如 Bastos.Sergio 暗示的那样,这可能会导致问题:blog.cakemail.com/the-iframe-cross-domain-policy-problem
  • @BFDatabaseAdmin 所以......它会加载跨域页面,运行它的 javascript 等等等等,但它不会显示它?
  • @WolfmanJoe 不确定,恐怕,我已经有一段时间没有处理这个问题了,但这可能是个问题。

标签: html internet-explorer iframe


【解决方案1】:

您必须配置 (1) 您的站点 http://my.domain.com 或 (2) 位于站点 http://my.domain.com 中的页面以发送 X-Frame-Options 元标记。

X-Frame-Options 元标记基本上是一个提示,告诉浏览器在 iframe 中呈现页面是安全的。

选项 1 - 配置您的网络服务器以发送 X-Frame-Options 元标记

<system.webServer>
  ...

  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="ALLOW-FROM http://my.otherdomain.com" />
    </customHeaders>
  </httpProtocol>

  ...
</system.webServer>

选项 2 - 配置您的页面(在 src="http://my.domain.com/myForm?userName=clicky&amp;email=cMcTesterton@domain.com" 引用的页面)发送 X-Frame-Options 元标记

<head>
    <meta name="X-Frame-Options" content="ALLOW-FROM http://my.otherdomain.com">
    ....
</head> 

Source

【讨论】:

  • 我试图用谷歌搜索它,它说 web.config 是一个 ASP .NET 配置文件?您是在给我一个 ASP .NET 答案,还是我缺少的更通用的东西?因为恐怕我没有使用 ASP .NET。 (但希望这可以帮助那些人。)
  • 我给你一个 IIS 服务器应用程序的配置(IIS 通常使用 ASP.NET)。无论如何,您必须配置您的网络服务器,以发送元标记X-Frame-Options。请查看我在答案中发布的链接,了解如何配置其他 Web 服务器。
  • 选项 2 没有用,很遗憾 - 但我正在考虑为我们的服务器执行选项 1。不过,我将无法很快对其进行测试,因为对配置的更改必须通过管理员运行。不过非常感谢!
  • 嗯,奇怪的是选项 2 不起作用 - 它在功能上等同于选项 1。不过,您应该先测试选项 1,然后再将其推送给您的管理员。
  • 在开发服务器上进行测试(您可以根据需要进行管理)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 2011-05-16
  • 2021-05-02
  • 1970-01-01
  • 2016-09-14
相关资源
最近更新 更多