我有一个在IE6& 7显示(错误)一个对话框,内容如下:
此页面包含安全和非安全项目
是否要显示不安全的项目?
在任何适当的浏览器中都不会发生这种情况,但该网站是公司的,许多客户仍在Windows 2000和IE6上。
我熟悉(并已消除)此消息的以下可能原因:
页面加载的一个或多个资源包含http://
而不是https://
- 这是显示错误的唯一合理原因,并会在工作的浏览器中导致相同的消息太。 Fiddler可以识别加载的非安全资源,因此很容易修复。
IE behaviour .htc
个文件已加载以提供DHTML功能 - 即使从https://
网址传递,这些文件通常也会被视为未加密,这使得它们甚至无法使用当IE6是新的。首先使用这些并不是一个好主意。
IE treats empty frames as nonsecure resources,因此<iframe src=""
或<iframe src="about:blank"
都会导致此错误。这很容易在代码中找到并修复。
IE5用于在使用ActiveX XMLHTTP组件时以非安全方式发送AJAX请求。我不认为这是IE6及以上版本的问题。
IE 6或7不支持数据URI,也不会显示数据URI,但如果CSS中包含任何数据URI,也会导致非安全警告。对于不使用它们的IE,我们有不同的CSS。
Javascript protocol links in the source for script tags report as nonsecure:<script type="text/javascript" src="javascript:void(0)">
通过清除src
属性轻松避免(感谢Eric!)
无法使用页面或动态加载外部库,也不使用CDN。我们确实使用了一些第三方插件,但它们是安全交付的,不会动态加载任何其他内容。
这里有关于这个IE漏洞的很多内容,但到目前为止我发现的所有问题都指出了我已经消除过的上述问题之一。
IE6和IE中是否还有其他错误? 7可能是导致此错误的原因?
有没有办法确定IE认为哪个资源是不安全的?
答案 0 :(得分:6)
我找到了问题的根源,但需要进行一些挖掘。
首先,Eric Law在prototype tool (exe)中提出another answer,帮助确定问题。
非安全资源是:
data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=
问题是IE6不支持数据URI,所以我们不使用它们。那么它来自哪里?
事实证明,jQuery UI 1.8是问题,特别是CSS中another bug的修复:
.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或更高版本)中看起来像others have also spotted this issue和it's been fixed。
我的解决方法是用空白gif的常规URL替换它,问题解决了。