我的应用程序正在 * 仅使用SSL * 的网站上使用Dojo 1.1.1。它目前正在利用dijit.ProgressBar
和一个dijit.form.DateTextBox
。
在 Firefox 2 & 3 中一切都运行良好,但当我在 IE7 中尝试相同的脚本时,结果是一个恼人的安全信息对话框:
此页包含安全和不安全项目。是否要显示不安全项目?
我已经仔细检查了页面中的任何 non-HTTPS 引用,但没有结果。它似乎是dojo.js
特有的东西。曾经有一个iframe
的小故障,src
被设置为空,但现在似乎已经修复(在查看源代码时)。
还有其他人遇到过这个问题吗?让 Dojo 在 * 仅支持SSL * 的Web服务器上与 IE 很好地配合使用的最佳实践是什么?
3条答案
按热度按时间u3r8eeie1#
在查看了Dijit的JavaScript源代码之后,我认为错误很可能是由于对动态生成的IFRAME的引用“不安全”而导致的。注意,脚本文件有两个版本,未压缩的代表原始源代码(dijit.js.uncompressed.js),而标准的(dijit.js)已经被压缩以获得最佳传输时间。
由于未压缩版本可读性最强,我将基于此描述我的解决方案。在第1023行,IFRAME用JavaScript呈现:
IE不知道IFRAME的src是否“安全”-所以我用以下代码替换了它:
这是IE中JavaScript工具包和SSL最常见的问题。由于IFRAME对DIV的覆盖支持不佳,因此IFRAME被用作垫片,因此这个问题非常普遍。
我的前5-10个页面重新加载是好的,但后来安全错误开始再次弹出。这是怎么可能的?同一个页面是“安全”的5次重新加载,然后它被IE选择为“不安全”时,加载第6次。
事实证明,在dijit.阿威(第1325行)的onload事件中还设置了一个背景图像。
这是行不通的,因为background-image标签不包含HTTP。尽管位置是相对的,IE7不知道它是否安全,所以提出了警告。
在这个特定的例子中,这个CSS被用来测试Dojo中的可访问性(A11 y),因为这不是我的应用程序所支持的,而且因为这个方法还有其他常见的bug问题,所以我选择删除dijit. wai的onload()中的所有内容。
一切都很好!页面加载没有零星的安全问题。
9cbw7uwe2#
如果你的页面是从非https URL加载文件,Firefox应该会告诉你同样的事情。底部(在状态栏中)的锁符号应该被划掉,而不是错误。你确定不是这样吗?
如果您看到该符号,请单击它并检查哪些文件是“不安全”的。
yzckvree3#
如果您使用CDN,您可以通过HTTPS包含所有模块,如here所示。
如果需要,您可以使用各种版本进行测试。目前最新的版本是
1.6.1