热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用IE和SSL编写Dojo-CodingDojowithIEandSSL

MyapplicationisusingDojo1.1.1onanSSL-onlywebsite.Itiscurrentlytakingadvantageofdijit

My application is using Dojo 1.1.1 on an SSL-only website. It is currently taking advantage of dijit.ProgressBar and a dijit.form.DateTextBox.

我的应用程序在仅限SSL的网站上使用Dojo 1.1.1。它目前正在利用dijit.ProgressBar和dijit.form.DateTextBox。

Everything works fabulous in Firefox 2 & 3, but as soon as I try the same scripts in IE7 the results are an annoying Security Information dialog:

在Firefox 2和3中一切都很棒,但是当我在IE7中尝试相同的脚本时,结果就是一个烦人的安全信息对话框:

This page contains both secure and non-secure items. Do you want to display the non-secure items?

此页面包含安全和非安全项目。要显示非安全项吗?

I have scrutinized the page for any non-HTTPS reference to no avail. It appears to be something specific to dojo.js. There use to be an iframe glitch where the src was set to nothing, but this appears to be fixed now (on review of the source).

我仔细检查了任何非HTTPS引用的页面无济于事。它似乎是dojo.js特有的东西。有一个iframe故障,其中src设置为空,但现在似乎已修复(在查看源代码时)。

Anyone else having this problem? What are the best-practices for getting Dojo to play well with IE on an SSL-only web server?

其他人有这个问题吗?在仅支持SSL的Web服务器上使Dojo与IE良好匹配的最佳实践是什么?

3 个解决方案

#1


9  

After reviewing the Javascript sourcecode for Dijit, I thought it was likely the error results from an "insecure" refrence to a dynamically generated IFRAME. Note there are two versions of the script file, the uncompressed represents the original source (dijit.js.uncompressed.js) and the standard (dijit.js) has been compressed for optimal transfer time.

在查看Dijit的Javascript源代码之后,我认为错误可能是由对动态生成的IFRAME的“不安全”引起的。请注意,脚本文件有两个版本,uncompressed表示原始源(dijit.js.uncompressed.js),标准(dijit.js)已经过压缩以获得最佳传输时间。

Since the uncompressed version is the most readable, I will describe my solution based on that. At line #1023, an IFRAME is rendered in Javascript:

由于未压缩版本的可读性最高,我将基于此描述我的解决方案。在#1023行,IFRAME以Javascript呈现:

if(dojo.isIE){
    var html="";
    iframe = dojo.doc.createElement(html);
}else{...

What's the problem? IE doesn't know if the src for the IFRAME is "secure" - so I replaced it with the following:

有什么问题? IE不知道IFRAME的src是否“安全” - 所以我用以下内容替换它:

if(dojo.isIE){
    var html="";
    iframe = dojo.doc.createElement(html);
}else{...

This is the most common problem with Javascript toolkits and SSL in IE. Since IFRAME's are used as shims due to poor overlay support for DIV's, this problem is extremely prevalent.

这是IE中Javascript工具包和SSL最常见的问题。由于DIV的覆盖支持不良,IFRAME被用作垫片,因此这个问题非常普遍。

My first 5-10 page reloads are fine, but then the security error starts popping up again. How is this possible? The same page is "secure" for 5 reloads and then it is selected by IE as "insecure" when loaded the 6th time.

我的前5-10页重新加载很好,但随后又出现了安全错误。这怎么可能?对于5次重新加载,同一页面是“安全的”,然后当第6次加载时,它被IE选为“不安全”。

As it turns out, there is also a background image being set in the onload event for dijit.wai (line #1325). This reads something like this;

事实证明,在dijit.wai的onload事件中也设置了背景图像(第1325行)。这读起来像这样;

div.style.cssText = 'border: 1px solid;'
                  + 'border-color:red green;'
                  + 'position: absolute;'
                  + 'height: 5px;'
                  + 'top: -999px;'
                  + 'background-image: url("' + dojo.moduleUrl("dojo", "resources/blank.gif") + '");';

This won't work because the background-image tag doesn't include HTTPs. Despite the fact that the location is relative, IE7 doesn't know if it's secure so the warning is posed.

这不起作用,因为background-image标记不包含HTTP。尽管该位置是相对的,但IE7不知道它是否安全,因此提出了警告。

In this particular instance, this CSS is used to test for Accessibility (A11y) in Dojo. Since this is not something my application will support and since there are other general buggy issues with this method, I opted to remove everything in the onload() for dijit.wai.

在此特定实例中,此CSS用于测试Dojo中的辅助功能(A11y)。由于这不是我的应用程序将支持的东西,并且由于此方法存在其他一般错误问题,因此我选择删除onij()中dijit.wai的所有内容。

All is good! No sporadic security problems with the page loads.

一切都很好!页面加载时没有零星的安全问题。

#2


1  

If your page is loading files from a non-https URL Firefox should tell you the same thing. Instead of an error the lock symbol at the bottom (in the status bar) should be crossed out. Are you sure that is not the case?

如果您的页面正在从非https URL加载文件,Firefox应该告诉您相同的事情。应该划掉底部(状态栏中)的锁定符号而不是错误。你确定不是这样吗?

If you see the symbol, click on it and check which files are "unsecure".

如果看到符号,请单击该符号并检查哪些文件是“不安全”。

#3


1  

If you're using CDN you can include all modules by HTTPS as seen here.

如果您正在使用CDN,则可以通过HTTPS包含所有模块,如此处所示。



You can test with various versions if you want. Currently the most recent is 1.6.1

如果需要,您可以使用各种版本进行测试。目前最近的是1.6.1


推荐阅读
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 本文详细探讨了在Java TCP编程中,如何理解和测量并发连接数、请求数及并发用户数,并提供了实际应用中的测试方法和优化建议。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 处理Android EditText中数字输入与parseInt方法
    本文探讨了如何在Android应用中从EditText组件安全地获取并解析用户输入的数字,特别是用于设置端口号的情况。通过示例代码和异常处理策略,展示了有效的方法来避免因非法输入导致的应用崩溃。 ... [详细]
  • java类名的作用_java下Class.forName的作用是什么,为什么要使用它?
    湖上湖返回与带有给定字符串名的类或接口相关联的Class对象。调用此方法等效于:Class.forName(className,true,currentLoader) ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 本文将在前几篇关于Android测试理论知识的基础上,通过ApiDemoTest实例详细探讨如何使用ApplicationTestCase进行Android应用测试。建议读者先阅读Android测试教程系列中的相关内容,以便更好地理解本文的实践部分。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 本文详细介绍了Android系统的四层架构,包括应用程序层、应用框架层、库与Android运行时层以及Linux内核层,并提供了如何关闭Android系统的步骤。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • Java 中的控制流与作用域
    本文详细介绍了 Java 中的控制流语句,包括块作用域、if 语句、for 循环、while 循环、do-while 循环、switch 语句以及 break 和 continue 语句的使用方法。通过具体的代码示例,帮助读者更好地理解和应用这些控制流结构。 ... [详细]
  • Spring 中策略模式的应用:Resource 接口详解
    本文探讨了在 Spring 框架中如何利用 Resource 接口实现资源访问策略。Resource 接口作为资源访问策略的抽象,通过多种实现类支持不同类型的资源访问。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
author-avatar
api
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有