IE9 res://ieframe.dll错误

27

我有一个网站,允许用户发布图片到Facebook页面。我使用一个表单并将其发送到隐藏的IFRAME,以防止用户在图片发布后被重定向。

表单定义:

<form name="myform" id="myform" enctype="multipart/form-data" action="" method="POST" onsubmit="getAction(this);" target="uploader">
//....form code....//

网页内嵌框架(Iframe):

<iframe name="uploader" width=2px height=2px style="visibility: hidden"></iframe>

我的问题是,在我的自己的Internet Explorer 9中,当我尝试上传图像时,我会得到这些错误:

SEC7111: HTTPS security is compromised by res://ieframe.dll/dnserrordiagoff.htm 
SEC7111: HTTPS security is compromised by res://ieframe.dll/ErrorPageTemplate.css 
SEC7111: HTTPS security is compromised by res://ieframe.dll/errorPageStrings.js 
SEC7111: HTTPS security is compromised by res://ieframe.dll/httpErrorPagesScripts.js 
SEC7111: HTTPS security is compromised by res://ieframe.dll/noConnect.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/bullet.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/bullet.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/bullet.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/down.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/favcenter.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/favcenter.png 
SEC7111: HTTPS security is compromised by res://ieframe.dll/background_gradient.jpg 

更奇怪的是,在我的朋友的计算机上,他使用相同版本的IE9,连接到同一网络,这个提交表单功能可以正常工作(在我家中的另一台电脑和我兄弟的电脑上也可以工作)。虽然我本可以说这只是一个本地的问题,但由于这个网站服务的客户众多,如果我不能理解这个错误,就可能会在其他设备上发生同样的问题。

我还要指出的是,它可以在Chrome和FireFox中顺利运行,没有任何问题。

我不确定这是否与代码相关,我已经尝试过搜索并找到了Microsoft文章这篇文章。但是我已经删除了任何第三方IE附加组件,我们和我的朋友都连接到同一个路由器(所以不是路由器问题),我也安装了最新的Windows更新。

目前我对解决这个问题没有任何头绪,所以我想问一下,你们有没有遇到类似或相同的错误?也许有一些解决方法...

如果需要,我很乐意提供更多的代码,但我不想在问题中填写太多代码,因为在大多数情况下它可以正常工作。

谢谢。

6个回答

11

最好在服务器层面解决此问题,而不是在客户端端,因为我们不能指望所有其他网站访问者更改他们的IE设置,只为了使用你的网站。

正如你所提到的,这实际上是由你的https环境中的iframe引起的。 IE9对此非常严格,因此您需要在x-frame-options中定义它:

对于Apache HTTP服务器

在Apache Web服务器的httpd.conf文件中添加/更改以下行:

Header always append X-Frame-Options SAMEORIGIN

请确保其未设置为DENY。 重新启动Web服务器

如果有帮助,请告诉我。


1
我相信这个设置是用来控制你的页面是否可以嵌入其他站点或者在框架和iframe中显示。https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options - Nick Rolando

7
如果你的朋友使用IE 9可以正常运行,而你不能,那么请比较一下你们的安全设置。特别是名为“在IFRAME中启动程序和文件”的选项可能是关键。如果这个选项不是问题所在,那么请尝试将每个提供此选项的安全选项从“禁用”设置为“提示”,看看你的IE是否会显示任何消息。

2
作为开发人员,我们不应该期望用户更改他们的浏览器设置。这是启用在后端(或代理)的安全功能,它有其存在的原因。必须在安全标头中通过后端进行修复。 - Alexander Burakevych

0
昨天我们在IE11控制台中遇到了这些确切的错误。对我们来说,在IIS中为iframed内容(将成为iframe src的页面)设置请求头为P3P=NOI有所帮助。我们通过根据Georges上面的答案检查请求头来实现这一点。
情况不同的是,我们通过查询参数将门户生成的数字传递给iframed内容。门户和iframed站点都运行https。

0
对我来说,这是由于我连接的站点没有有效的 HTTPS 证书引起的。我创建了一个开发用的证书,但 Windows 没有将其识别为可信证书。

0
感谢@George Answer,我们能够找到问题所在 -
最近在我们的项目中启用Spring Security时遇到了这个问题。在开发人员工具中得到响应头为X-Frame-Options=DENY后,我们意识到Spring Security默认附加带有默认值的标头。 安全标头 删除它解决了我们的问题 -
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
   WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      // ...
      .headers().disable();
  }
}

-2
解决“res://ieframe.dll/dnserrordiagoff.htm#”的方法:
1. 打开控制面板-Internet选项
2. 隐私标签
3. 设置低
4. 应用并确定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接