8

我有一个 HTTPS 站点,在 IE6 和 7 中显示(错误)一个对话框,内容如下:

此页面包含安全和非安全项目

您想显示不安全的项目吗?

这在任何适当的浏览器中都不会发生,但是该站点是企业站点,并且许多客户仍在使用 Windows 2000 和 IE6。

我熟悉(并已消除)此消息的以下可能原因:

  1. 与页面一起加载的一个或多个资源具有http://而不是https://- 这是显示错误的唯一合法原因,并且也会在工作浏览器中导致相同的消息。Fiddler可以识别加载不安全的资源,因此很容易修复。

  2. 加载IE 行为 .htc文件以提供 DHTML 功能 - 即使从https://URL 传递,这些文件通常也被视为未加密,这使得它们即使在 IE6 是新版本时也毫无用处。首先使用这些不是一个好主意。

  3. IE 将空帧视为非安全资源,因此<iframe src=""<iframe src="about:blank"两者都会导致此错误。这很容易在代码中找到和修复。

  4. 在使用 ActiveX XMLHTTP 组件时,IE5 用于将 AJAX 请求作为不安全的方式发送。我认为这在 IE6 及更高版本中不是问题。

  5. IE 6 或 7 不支持 Data-URI,并且不会显示,但如果有任何包含在 CSS 中也会导致不安全警告。我们有不同的不使用它们的 IE 的 CSS。

  6. 脚本标签源中的 Javascript 协议链接报告为不安全<script type="text/javascript" src="javascript:void(0)">通过清除src属性轻松避免(感谢 Eric!)

  7. 不加载外部库,随页面或动态加载,不使用 CDN。我们确实使用了一些第三方插件,但它们是安全交付的,不会动态加载任何进一步的内容。

这里有很多关于这个 IE 错误的信息,但到目前为止我发现的所有问题都指向我已经消除的上述问题之一。

IE6 和 7 中是否还有其他可能导致此错误的错误?

有什么方法可以识别 IE 认为哪个资源是不安全的?

4

1 回答 1

6

我找到了问题的根源,但需要一些挖掘。

首先, Eric Law另一个答案中提出了一个原型工具(exe)来帮助识别问题。

非安全资源是:

data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=

问题是 IE6 不支持数据 URI,所以我们不使用它们。那么这是从哪里来的呢?

事实证明,jQuery UI 1.8 是问题所在,特别是对 CSS中另一个错误的修复:

.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;
    /* http://bugs.jqueryui.com/ticket/7233
     - Resizable: resizable handles fail to work in IE if transparent and content overlaps
    */
    background-image:url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=);
}

看起来其他人也发现了这个问题,并且在最新的 jQuery UI CSS(1.9 或更高版本)中修复。

我的解决方法是将其替换为空白 gif 的常规 URL,问题解决了。

于 2012-11-15T15:59:39.143 回答